当前位置: 首页 >数据库 > SQL控制台执行创建存储过程的脚本失败

SQL控制台执行创建存储过程的脚本失败

  1、存储过程创建脚本示例

use test_db;DROP PROCEDURE IF EXISTS test_procedure_create;CREATE PROCEDURE test_procedure_create()BEGINselect 'test';END

  2、脚本执行时遇到的问题现象

SQL控制台执行创建存储过程的脚本失败 _ JavaClub全栈架构师技术笔记

  错误详情如下:

SQL 错误 [1064] [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3  You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3  You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3

  3、原因分析

  从错误信息中,看不出是什么原因,就知道是语法错误。此时,一时半会也看不出语法错在哪里。后来想了想,在存储体中每条SQL语句都是以分号结尾的,而在SQL控制台中在执行脚本时,一遇到分号就会执行SQL语句,这样的话若是该条语句并不是正确的执行语句的话,那么就会报错。由此,联想到是不是DELIMITER分隔符没有设置好,由于DELIMITER默认情况下是以分号作为分隔符的,而在存储体中又是以分号为标识来确定每条语句的,所以存在冲突了;那么我们可以更改默认的分隔符,例如将分隔符设置为$$(当然,你也可以设置为其它的合法符号),以它来作为起始和结束的标识。修改好后的脚本内容如下:

use test_db;DROP PROCEDURE IF EXISTS test_procedure_create;DELIMITER $$ -- 注意DELIMITER与$$之间存在空格$$CREATE PROCEDURE test_procedure_create()BEGINselect 'test';END$$DELIMITER ; -- 一定要记得还原哦,注意DELIMITER与;之间存在空格

  4、效果检验

  在SQL控制台中执行修改后的脚本,结果运行正常,如下图所示:

SQL控制台执行创建存储过程的脚本失败 _ JavaClub全栈架构师技术笔记     SQL控制台执行创建存储过程的脚本失败 _ JavaClub全栈架构师技术笔记

  上图表明存储过程已创建成功!

作者:晒太阳的兔子很忙
来源链接:https://www.cnblogs.com/bien94/p/12900295.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/database/117417.html

标签:SQL_syntax
分享给朋友:

“SQL控制台执行创建存储过程的脚本失败” 的相关文章

sql递归查询 2022年05月17日 21:40:33
mysql之基础查询 2022年06月06日 00:56:31
mysql 查询或 2022年06月07日 13:56:22
mysql查询给某个字段赋值 2022年06月10日 21:43:53
关于mysql查询时间范围的问题 2022年06月12日 21:19:01
MySQL基本查询 2022年06月15日 12:06:53