作者:小何775 | 来源:互联网 | 2023-09-01 15:28
默认的MySQL语句分隔符为;(正如你已经在迄今为止所使用的MySQL语句中所看到的那样)。mysql命令行实用程序也使用;作为语句分隔符。如果命令行实用程序要解释存储过程自身内的;字符,则它们最终不会成为存储过程的成分,这会使存储过程中的SQL出现句法错误。解决办法是临时更改命令行实用程序的语句分隔符,如下所示:
MariaDB [TEST]> DELIMITER
MariaDB [TEST]> CREATE PROCEDURE abc()
-> BEGIN
-> SELECT AVG(list) AS a1 FROM tablename;
-> END
Query OK, 0 rows affected (0.002 sec)
MariaDB [TEST]> delimiter ;
其中,DELIMITER //告诉命令行实用程序使用//作为新的语句结束分隔符,可以看到标志存储过程结束的END定义为END //而不是END;。这样,存储过程体内的;仍然保持不动,并且正确地传递给数据库引擎。最后,为恢复为原来的语句分隔符,可使用DELIMITER ;。除\符号外,任何字符都可以用作语句分隔符。