提到mysql存储过程异常处理_mysql存储过程大家在熟悉不过了,那你是否知道mysql存储过程异常处理_mysql存储过程吗?快和小编一起去了解一下吧!
1、存储过程是SQL语句和控制语句的预编译集合,它们存储在一个名称下并作为一个单元进行处理。存储过程存储在数据库中,可以由应用程序调用和执行,允许用户声明变量和控制进程。存储过程可以接收参数(输入类型参数、输出类型参数),并且可以有多个返回值。因此,存储过程的执行效率高于单个SQL命令。
【资料图】
2、1.增强SQL语句的功能和灵活性。
3、2.实现更快的执行速度。当客户端第一次调用存储过程时,MySQL引擎会对其进行解析和编译,然后将编译后的结果存储在内存中,所以第一次的效率和以前是一样的。但是以后会直接调用内存中的编译结果,效率会提高。
4、3.减少网络流量。单个SQL语句有大量的字符,但是通过调用存储过程,只需要传递存储过程的名称和相关参数,提交给服务器的数据量相对较小。
5、创造
6、[定义者={用户|当前用户}]
7、过程sp_name([proc_parameter[,]])
8、[特点.]例程_正文
9、过程参数:
10、[ IN | OUT | INOUT ]参数名称类型
11、IN指示在调用存储过程时必须指定此参数的值,并且不能返回。
12、OUT表示该参数的值可以被存储过程更改,并且可以被返回。
13、INOUT表示该参数是在调用时指定的,并且可以更改和返回。
14、COMMENT " string " | {包含SQL |无SQL |读取SQL数据|修改SQL数据}| SQL安全{DEFINER | INVOKER}
15、评论:评论
16、包含SQL:包含SQL语句,但不包含读取或写入数据的语句。
17、NO SQL:不包含SQL语句。
18、读取SQL数据:包含读取数据的语句。
19、修改SQL数据:包含写数据的语句。
20、Security {definer | invoker}:表示谁有执行的权限。
21、1.流程主体由合法的SQL语句组成;
22、2.过程体可以是“任意”SQL语句(这里的任意主要指记录的添加、删除和查询,多表连接);
23、3.如果流程主体是复合结构,请使用BEGIN.END语句;
24、4.复合结构可以包含声明、循环和控制结构。
25、创建过程sp1()选择版本();
26、方法一:调用sp _ name([参数[,]])如果存储过程包含参数,则必须有括号。
27、方法2:调用sp_name[()]如果存储过程不包含参数,括号是可选的。
28、更改过程sp _ name[特征.]
29、COMMENT "string"|{包含SQL |无SQL |读取SQL数据|修改SQL数据}| SQL安全{ DEFINER | INVOKER }
30、您只能修改存储过程中的注释和当前内容的类型,而不能修改过程体。要修改过程体,您需要首先删除存储过程,然后重新构建它。
31、DROP PROCEDURE[如果存在] sp_name
32、分隔符//
33、创建过程remove user byid(IN p _ id INT UNSIGNED)
34、开始
35、从id=p_id的用户中删除;
36、END//
37、分隔符;
38、在这里,调用存储过程,如下图所示:
39、分隔符//
40、创建过程removeandreturnusernums(IN p _ id INT UNSIGNED,OUT userNums INT UNSIGNED)
41、开始
42、从id=p_id的用户中删除;
43、选择从用户到用户数的计数(id );
44、结束
45、//
46、分隔符;
47、1.用户变量:以“@”开头,采用“@变量名”的形式
48、变量绑定到mysql客户端,设置的变量只在当前用户使用的客户端上生效。
49、SET @ I=7;
50、2.全局变量:定义时,它以以下两种形式出现:set GLOBAL variable name或set @@global。变量名。
51、对所有客户有效。只能用超级权限设置全局变量。
52、3.会话变量:仅对连接的客户端有效。
53、4.局部变量:范围在begin和end语句块之间。语句块中设置的变量
54、Declare语句专门用于定义局部变量。Set语句是设置不同类型的变量,包括会话变量和全局变量。
55、让我们调用存储过程。
56、调用removeAndReturnUsersNums(1,@ nums);
57、分隔符//
58、CREATE PROCEDURE removeUserByAgeAndReturnInfos(IN p _ age SMALLINT UNSIGNED,OUT deleteUsers SMALLINT UNSIGNED,OUT userCounts SAMLLINT UNSIGNED)
59、开始
60、从年龄=p_age的用户中删除;
61、SELECT ROW _ COUNT()INTO delete users;
62、从用户到用户计数中选择计数(id );
63、结束
64、//
65、分隔符;
66、[注意]ROW_COUNT()函数用于获取插入、删除和更新的受影响记录的总数。
67、让我们调用存储过程。
68、调用removeUserByAgeAndReturnInfos(20,@a,@ b);
69、【注意】@a表示删除的记录数,@b表示剩余的记录数。
70、选择@a,@ b;
71、1.存储过程实现的函数更复杂;而且功能更有针对性。
72、2.存储过程可以返回多个值;一个函数只能有一个返回值。
73、3.存储过程通常是独立执行的;而函数主要作为其他SQL语句的组件出现。
本文到此结束,希望对大家有所帮助。