在MySQL命令行(CLI)中,如果直接执行创建函数(Function)、存储过程(Stored Procedure)、触发器(Trigger)或定义事件(Event)SQL,基本都会报语法错误,主要原因就是因为 SQL 的默认分隔符是分号,而一般函数SQL 都会包含多个分号,从而导致 SQL 报错。 MySQL在读取这些复合语句时遇到分号,它会尝试立即执行遇到的第一个完整的语句,而不是等待整个复合语句都输入完毕。
解决方法有两种:
- 到图形终端中执行创建 SQL.
- 在命令行中使用DELIMITER命令。
DELIMITER
命令的主要作用是改变MySQL语句的默认分隔符。MySQL的默认语句分隔符是分号(;),当你输入一个以分号结尾的语句并按下回车键时,MySQL会尝试执行该语句。
在复合语句之前使用DELIMITER命令来改变MySQL语句的分隔符。这样,可以在复合语句内部自由使用分号来分隔子语句,而不用担心MySQL会提前执行它们。完成复合语句的编写后,再次使用DELIMITER命令将分隔符改回分号,以便继续以正常方式执行其他语句。
步骤如下:
1、修改默认分隔符为 $ $:delimiter $$
2、执行SQL,注意结尾加 $ $.
3、恢复默认分隔符为 “;”: delimiter ;
操作示例:
DELIMITER $$
CREATE FUNCTION add_two_numbers(a INT, b INT)
RETURNS INT
BEGIN
RETURN a + b;
END$$
DELIMITER ;
SELECT add_two_numbers(5, 3) AS sum;
版权声明:本文为博主原创文章,未经博主允许不得转载。
- 上一篇:Mac 破解zip压缩文件密码
- 下一篇:Oracle RU 19.24 发布了