签到成功

知道了

CNDBA社区CNDBA社区

MySQL 命令行 创建 存储过程 和 函数

2024-08-16 15:29 586 0 原创 MySQL
作者: dave

在MySQL命令行(CLI)中,如果直接执行创建函数(Function)、存储过程(Stored Procedure)、触发器(Trigger)或定义事件(Event)SQL,基本都会报语法错误,主要原因就是因为 SQL 的默认分隔符是分号,而一般函数SQL 都会包含多个分号,从而导致 SQL 报错。 MySQL在读取这些复合语句时遇到分号,它会尝试立即执行遇到的第一个完整的语句,而不是等待整个复合语句都输入完毕。

解决方法有两种:

  1. 到图形终端中执行创建 SQL.
  2. 在命令行中使用DELIMITER命令。

DELIMITER命令的主要作用是改变MySQL语句的默认分隔符。MySQL的默认语句分隔符是分号(;),当你输入一个以分号结尾的语句并按下回车键时,MySQL会尝试执行该语句。http://www.cndba.cn/dave/article/131575http://www.cndba.cn/dave/article/131575http://www.cndba.cn/dave/article/131575

在复合语句之前使用DELIMITER命令来改变MySQL语句的分隔符。这样,可以在复合语句内部自由使用分号来分隔子语句,而不用担心MySQL会提前执行它们。完成复合语句的编写后,再次使用DELIMITER命令将分隔符改回分号,以便继续以正常方式执行其他语句。http://www.cndba.cn/dave/article/131575http://www.cndba.cn/dave/article/131575http://www.cndba.cn/dave/article/131575http://www.cndba.cn/dave/article/131575

http://www.cndba.cn/dave/article/131575

步骤如下:

1、修改默认分隔符为 $ $:delimiter $$
2、执行SQL,注意结尾加 $ $.
3、恢复默认分隔符为 “;”: delimiter ;http://www.cndba.cn/dave/article/131575

操作示例:http://www.cndba.cn/dave/article/131575

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;

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2262
    原创
  • 3
    翻译
  • 578
    转载
  • 192
    评论
  • 访问:8087780次
  • 积分:4349
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ