相关文件10bet官方网站 下载本手册 从本手册中摘录

MySQL 8.0参考手册/存储的对象/定义存储的程序

25.1定义存储的程序

每个存储的程序包含由SQL语句组成的主体。该陈述可能是由分号分隔的几个陈述组成的复合声明(;) 人物。例如,以下存储过程具有由A组成的机构开始......结束块包含一个声明和A.重复循环本身包含另一个陈述:

创建程序DOREPEAT(P1 INT)开始设置@x = 0;重复设置@x = @x + 1;直到@x> p1结束重复;结尾;

如果你使用mysql.客户程序程序要定义包含分号字符的存储程序,出现了问题。默认,mysql.本身将分号识别为语句分隔符,因此您必须暂时重新定义分隔符mysql.将整个存储的程序定义传递给服务器。

重新定义mysql.分隔符,使用分隔符命令。以下示例显示了如何为此进行此操作dorepeat()程序刚刚显示。分隔符更改为//要使整个定义能够作为单个语句传递给服务器,然后恢复到;在调用程序之前。这使得这使得;定义在程序机构中用于传递给服务器而不是被解释为mysql.本身。

mysql> delimiter // mysql> create procage dorepeat(p1 int) - > begin  - >设置@x = 0;- >重复设置@x = @x + 1;直到@x> p1结束重复;- >结束 - > //查询OK,0行受影响(0.00秒)MySQL>分隔符;mysql>呼叫dorepeat(1000);查询确定,0行受影响(0.00秒)mysql>选择@x;+ ------ + |@x |+ ------ + |1001 | +------+ 1 row in set (0.00 sec)

您可以将分隔符重新定义为以外的字符串//,并且分隔符可以包括单个字符或多个字符。您应该避免使用反斜杠(\)字符,因为这是MySQL的转义字符。

以下是使用参数的函数的示例,使用SQL函数执行操作,并返回结果。在这种情况下,不需要使用分隔符因为函数定义不包含内部;声明分隔符:

MySQL>创建功能Hello(s char(20))mysql>返回char(50)确定性 - >返回concat('hello,',s,'!');查询OK,0行受影响(0.00秒)MySQL>选择Hello('World');+ ---------------- + |你好('世界')|+ ---------------- + |你好,世界!|+ ---------------- + 1行(0.00秒)