mysql存储过程执行权限(mysql存储过程)

聂民安
导读 大家好,小信来为大家解答以上问题。mysql存储过程执行权限,mysql存储过程很多人还不知道,现在让我们一起来看看吧!1、存储过程是SQL语句

大家好,小信来为大家解答以上问题。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语句的组件出现。

本文到此结束,希望对大家有所帮助。

标签:

免责声明:本文由用户上传,如有侵权请联系删除!