相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 41.9 mb
PDF (A4)- 42.0 mb
手册页(TGZ)- 266.1 kb
手册页(邮政编码)- 376.0 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

25.2.1存储例程语法

存储例程要么是过程,要么是函数。方法创建存储例程创建过程创建函数语句(见第13.1.17节“CREATE PROCEDURE和CREATE FUNCTION语句”).方法调用过程调用声明(见第13.2.1节,“CALL语句”),并且只能返回使用输出变量的值。可以像任何其他函数一样从语句内部调用函数(即通过调用函数名),并且可以返回一个标量值。存储例程的主体可以使用复合语句(参见第13.6节,“复合语句语法”).

方法可以删除存储的例程下降过程删除函数语句(见第13.1.29节“DROP过程和DROP函数语句”),并用改变的过程改变函数语句(见第13.1.7节,“ALTER PROCEDURE语句”).

存储过程或函数与特定的数据库相关联。这有几个含义:

  • 当调用例程时,隐式使用db_name执行(当例程终止时撤销)。使用存储例程中的语句是不允许的。

  • 可以用数据库名称限定例程名称。这可以用于引用不在当前数据库中的例程。例如,调用存储过程p或函数f这与测验可以说是数据库调用test.p ()test.f ()

  • 当一个数据库被删除时,所有与它相关的存储例程也会被删除。

存储的函数不能递归。

存储过程中的递归是允许的,但默认情况下是禁用的。要启用递归,请设置max_sp_recursion_depth将服务器系统变量设置为大于零的值。存储过程递归增加了对线程堆栈空间的需求。的值max_sp_recursion_depth时,可能需要通过增加的值来增加线程堆栈的大小thread_stack在服务器启动。看到第5.1.8节,“服务器系统变量”,以查询更多资料。

MySQL支持一个非常有用的扩展,它支持使用regular选择语句(即不使用游标或局部变量)。这种查询的结果集直接发送到客户机。多个选择语句生成多个结果集,因此客户端必须使用支持多个结果集的MySQL客户端库。这意味着客户端必须使用来自MySQL 4.1版本的客户端库。客户端还应该指定CLIENT_MULTI_RESULTS选项。对于C程序,这可以通过mysql_real_connect ()C API函数。看到mysql_real_connect (),多语句执行支持

在MySQL 8.0.22及以后版本中,由存储过程中的语句引用的用户变量在第一次调用过程时就确定了它的类型,并且在以后每次调用过程时都保留这种类型。