备注:可以使用 ExecuteNonQuery 来执行目录操作(例如查询数据库的结构或创建诸如表等的数据库对象),或通过执行 UPDATE、INSERT 或 DELETE 语句,在不使用 DataSet...虽然 ExecuteNonQuery 不返回任何行,但映射到参数的任何输出参数或返回值都会用数据进行填充。对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。...对于所有其他类型的语句,返回值为 -1。如果发生回滚,返回值也为 -1 看完后才明白,原来select语句不适合ExecuteNonQuery()方法,原来是这样,方法用错了!...虽然 ExecuteNonQuery 不返回任何行,但映射到参数的任何输出参数或返回值都会用数据进行填充。 对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
Mybatis源码-XXXmapper.xml中的select|insert|update|delete标签解析过程 前提:上次讲过一篇《Mybatis源码-XXXmapper.xml中的resultMap...标签解析过程》,现在就在上篇文章基础上讲一讲Mybatis是如何解析XXXmapper.xml文件中的select|insert|update|delete标签的,由于这几种标签的方式是一致的,下面我将以...update标签为例,介绍一下update标签的解析过程。...首先进入select|insert|update|delete解析入口:XMLMapperBuilder#configurationElement。 ? 2....XMLStatementBuilder#parseStatementNode是负责解析单前的select|insert|update|delete节点,主要就是拿到节点属性去XMLLanguageDriver
Mybatis 查询结果返回 Map、List、Pair 测试数据 数据库 SQL测试数据 – 笑虾原创诗词表 查询返回单个结果 返回单个 Map 设置返回值类型 resultType="java.util.Map..." PoemMapper.xml select id="selectMap" resultType="java.util.Map"> SELECT id, title, author...PoemMapper.xml 设置返回值类型 resultType="java.util.LinkedHashMap" 。...用LinkedHashMap保留住SQL中SELECT 字段的排序。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
正是因为只有Update操作才需要显式指定映射的是实体属性值的版本(Current/Original),所以在进行实体/存储过程映射的时候,只有Update存储过程才可以选择“是否采用原始值(Use Original...反映在VS的.edmx模型设计器上就是:只有Update存储过程的参数映射才具有“Use Original Value”这个复选框。 ? 二、Delete存储参数队应的就一定是Original值吗?...但是,我们忽略掉一点:Delete存储过程一定非得执行删除操作吗?如果我进行“逻辑删除”,实际上进行的是Update操作。关于逻辑删除的实现,可以参阅我上一篇文章《逻辑删除的实现与自增长列值返回》。...但是,由于Delete存储过程默认使用的是实体对象的初始值,即使你在删除之前为Contact对象的LastUpdatedBy属性设置了新的值,该值也不可能传入到存储过程中去。...所以,我个人觉得这是EF一个值得改进的地方,让Delete存储过程和Update一样,也可以指定不同的版本。
整理一下级联更新和删除 c#调用返回值 use master go IF exists(select 1 from sysdatabases where name='temp') BEGIN...cascade --更新 --查看现有数据 select * from ProductInfo select * from ProductDetails --更改 update ProductInfo...第一种方法: C#代码: protected void btnBack_Click(object sender, EventArgs e) { //调用存储过程 stringconStr...return)这种方式 只能返加数值类型 第二种方法: protected void btnBack_Click(object sender, EventArgs e) { //调用存储过程...cmd.Parameters.Add(sp); cmd.ExecuteNonQuery(); conn.Close(); } 存储过程如下
最近响应群里朋友完整开源之前那个博客系统,准备重构一番项目的代码,对数据库中的表决定都添加 create_by、update_by、create_time、update_time、del_flag 等字段...是的,没错,可以使用存储过程。...下面是对 sens_blog 这个库的所有的表中的 del_flag 设置默认值的示例 -- 如果存储过程存在就删除 DROP PROCEDURE IF EXISTS updateColumn; CREATE...-- 查询数据库sens_blog中含有del_flag列的表,如果区分大小写使用binary COLUMN_NAME = 'del_flag' DECLARE result CURSOR FOR SELECT...COLUMN del_flag SET DEFAULT 0'); PREPARE stmt FROM @execSql; EXECUTE stmt; END WHILE; END; -- 调用存储过程更新数据
本篇文章通过实例的方式,讨论两个在EF使用存储过程的主题:如何通过实体和存储过程的映射实现逻辑删除;对于具有自增长类型主键的数据表,在进行添加操作的时候如何将正确的值反映在实体对象上。...,不是就行Delete操作,而是进行Update操作,将IS_DELETED的值设置成1即可,这样的存储过程定义如下: 1: CREATE PROCEDURE P_CONTACT_D 2:...由于ID的数据类型改变了,你需要修正Update和Delete存储过程,并改变Contact的ID属性的数据类型从String编程Int32。...为了让存储过程中SELECT语句返回的结果集体现在被提交的Contact对象上,你需要设置列名(或者通过AS操作符设置的别名)与实体类型的属性之间的映射关系。...在Entity Framework中使用存储过程(三):逻辑删除的实现与自增长列值返回 在Entity Framework中使用存储过程(四):如何为Delete存储过程参数赋上Current值?
if exists(select * from sysobjects where name='usp_AllPmsTest') drop proc usp_AllPmsTest go create...int output as begin insert into ShopModelBak values(@cityName,1,1) set @id=@@identity select...ShopModel.SId inner join View_CityData on ShopMenu.MCityId=CId where CName=@cityName return (select...count(1) from ShopMenu) end go declare @total int,@id int exec @total=usp_AllPmsTest '滨湖区',@id output select
---- 触发器的概念和第一个触发器 数据库触发器是一个与表相关联的,存储的PL/SQL 语句。...当一个基表被修改( INSERT, UPDATE, DELETE)时要执行的存储过程,执行时根据其所依附的基表改动而自动触发,因此与应用程序无关,用数据库触发器可以保证数据的一致性和完整性。...DML触发器的限制: CREATE TRIGGER语句文本的字符长度不能超过32KB; 触发器体内的SELECT 语句只能为SELECT … INTO …结构,或者为定义游标所使用的SELECT 语句。...('旧的region_id值是'||:old.region_id ||'、新的region_id值是'||:new.region_id); UPDATE countries...VALUES(p_emp_id, p_start_date, p_end_date, p_job_id, p_department_id); END add_job_history; --创建触发器调用存储过程
,Count from QQModel"); //带参查询 var qqModeList = conn.Query("select...{ Console.WriteLine(item.Id + " | " + item.SeoKeywords + " | :" + item.Title); } } 多返回值:...title = "Title1", content = "TContent1", author = "毒逆天" }); //改 //int count = conn.Execute("update...= "么么哒", id = 274 }); if (count > 0) { Console.WriteLine(count + "条操作成功"); } } 存储过程...: //查询 using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); //参数名得和存储过程的变量名相同
) 消息:不正确的表定义,在DEFAULT或ON UPDATE子句中,对于CURRENT_TIMESTAMP,只能有一个TIMESTAMP列。...错误:1367 SQLSTATE: 22007 (ER_ILLEGAL_VALUE_FOR_TYPE) 消息:解析过程中发现非法%s ’%s’值。...错误:1385 SQLSTATE: HY000 (ER_NO_GROUP_FOR_PROC) 消息:对于该过程,SELECT必须有1个组。...%s’基本表的字段没有默认值。 错误:1424 SQLSTATE: HY000 (ER_SP_NO_RECURSION) 消息:不允许递归存储子程序。...错误:1442 SQLSTATE: HY000 (ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG) 消息:由于它已被调用了该存储函数/触发程序的语句使用,不能在存储函数/触发程序中更新表
) 消息:对于过程'%s',参数计数不正确 · 错误:1108 SQLSTATE: HY000 (ER_WRONG_PARAMETERS_TO_PROCEDURE) 消息:对于过程'%s',...· 错误:1367 SQLSTATE: 22007 (ER_ILLEGAL_VALUE_FOR_TYPE) 消息:解析过程中发现非法%s '%s'值。...· 错误:1385 SQLSTATE: HY000 (ER_NO_GROUP_FOR_PROC) 消息:对于该过程,SELECT必须有1个组。...%s'基本表的字段没有默认值。 · 错误:1424 SQLSTATE: HY000 (ER_SP_NO_RECURSION) 消息:不允许递归存储子程序。...· 错误:1442 SQLSTATE: HY000 (ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG) 消息:由于它已被调用了该存储函数/触发程序的语句使用,不能在存储函数
count(distinct col) D.sql语句里使用了distinct,就不能使用group by或者order by 解析: A、分组是group by,distinct是列出唯一的不同值...5、(单选)delimiter在MySQL中的作用是: A.标识存储过程开始执行。 B.标识存储过程结束。 C.重置MySQL的命令结束符。 D.删除当前的MySQL分隔符。...B.MySQL 5.5上一张表上最多只能建两个update相关的触发器。 C.可以在一个t1表的before update触发器中执行update t1 的sql语句。...解析: B、对于update,5.5版本只能在before和after update的时候各自建一个触发器。 C、触发器不能更新自身表的数据。 D、可以的,只要有权限。...D.上面所有都不正确。 9、(单选)有表tab(name varchar(20), id int, sal int)分别表示员工姓名、员工号、薪水,如何查找出薪水第二高的员工的薪水?
A.SELECT B.INSERT C.UPDATE D.DELETE 4.在关系数据库设计中,设计关系模式是__C__的任务。 ...答案:①浪费存储空间及修改麻烦②潜在的数据不一致性 2.数据库在运行过程中可能产生的故障有____________、_______________、___________。 ...Create table 表名 Alter table 表名 Drop table 表名 2、存储过程的优点是什么? ...存储过程的优点: 1.提高性能 2.减轻网络拥塞 3.一致性较好 4.改善安全机制 3、什么是触发器?触发器有哪几种?触发器有什么优点? ...一个触发器是由T-SQL语句集组成的代码块,在响应某些动作时激活该语句集有insert,delete,update触发器它防止了对数据的不正确、未授权的和不一致的改变 4、常见的几种约束有哪些?
在InnoDB存储引擎中,域完整性可以通过以下途径来保证: a. 选择适合的数据类型确保一个数据值满足条件 b. 外键(Foreign Key)约束 c. 编写触发器 d....对错误数据的约束 在某些默认设置下,MySql数据库允许非法或不正确的数据的插入或更新,又或者可以在数据库内部将其转化为一个合法的值,如向not null的字段插入一个null值,MySql数据库会将其更改为...触发器与约束 3.1 触发器的认识 触发器的作用是在执行insert,delete和update命令之前或之后自动调用sql命令或存储过程 3.1.1 触发器的创建 Create [definer...外键约束 外键用来保证参照完整性,MySQL数据库的MyIsAM存储引擎本身并不支持外键,对于外键的定义只是起到一个注释的作用,而InonoDB存储引擎则完整支持外键约束。...和update操作时,相应的子表中的数据被更新为NULL值,但是子表中对应的列必须允许为NULL值 (3)NO ACTION 表示父表发生delete或update操作时,抛出错误,不允许这类操作发生
文章目录 MySQL_存储过程-sql编程-函数-触发器-用户管理 建立表 1.存储过程(procedure) (1)创建存储过程 (2)参数的类别 (3)删除存储过程 (4)查看存储过程的信息 (5)...局部变量 (6)全局变量(用户变量) (7)系统变量 (8)带有输出参数的存储过程 (9)带有输入输出参数的存储过程 2.SQL编程(了解) (1) if-elseif-else语句 (2) case-when...sid=param; end// #调用 call pro_2(5)// (2)参数的类别 在存储过程中,没有return,如果需要返回值,通过输出参数来实现 在MySQL中,参数分为3类,输入参数...*num; end// #调用 #@result 接受返回值 call pro_6(6,@result)// select @result from dual// (9)带有输入输出参数的存储过程 create...; when 4 then select '贵族' as '气质'; else select '输入不正确' as '气质'; end case; end
= null) { 如果cache存在,那么会根据sql配置(,select>,update>,的flushCache属性来确定是否清空缓存。...if (ms.isUseCache() && resultHandler == null) { 确保方法没有Out类型的参数,mybatis不支持存储过程的缓存,所以如果是存储过程,这里就会报错。...如果在UserMapper.xml中做了刷新缓存的操作,在XXXMapper.xml中缓存仍然有效,如果有针对user的单表查询,使用缓存的结果可能会不正确。...select id="selectUserRoles" resultType="UserRoleVO"> select * from user_role a,role b where a.roleid...如果使用了二级缓存,都会导致上面这个查询结果可能不正确。 如果你正好修改了这个用户的角色,上面这个查询使用缓存的时候结果就是错的。 这点应该很容易理解。
= null) { 1 如果cache存在,那么会根据sql配置(,select>,update>,<delete...ms.isUseCache() && resultHandler == null) { 1 确保方法没有Out类型的参数,mybatis不支持存储过程的缓存...,所以如果是存储过程,这里就会报错。...select id="selectUserRoles" resultType="UserRoleVO"> select * from user_role a,role b where a.roleid...如果使用了二级缓存,都会导致上面这个查询结果可能不正确。 如果你正好修改了这个用户的角色,上面这个查询使用缓存的时候结果就是错的。 这点应该很容易理解。
该模式的简单描述是当在列中插入不正确的值时“给出错误而不是警告”。注释:一旦发现错误立即放弃INSERT/UPDATE。...如果把sql_mode的值设置成后面的两个值(STRICT_TRANS_TABLES或者TRADITIONAL,也就是我们说的严格模式),那么当在列中插入或更新不正确的值时,mysql将会给出错误,并且放弃...insert/update操作。...过程中,该模式未启用的话,如果数据被零除,最终结果插入NULL并且不提示warnings该模式启用的话,如果数据被零除,最终结果插入NULL并且会提示warnings>set session sql_mode...不设置这个参数的话,找不到指定的存储引擎的话,会用默认的存储引擎替代,但会有warning提示。
(重点) 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它...存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。...,过程和函数的区别在于函数可以有一个返回值;而过程没有返回值。...但过程和函数都可以通过out指定一个或多个输出参数。我们可以利用out参数,在过程和函数中实现返回多个值。...在触发器中触发语句与伪记录变量的值 触发语句 :old :new Insert 所有字段都是空(null) 将要添加的数据 Update 更新以前该行的值 更新后的值 delete 删除以前该行的值 所有字段都是空
领取专属 10元无门槛券
手把手带您无忧上云