SQL控制台执行创建存储过程的脚本失败
2023-09-14 09:08:22 时间
1、存储过程创建脚本示例
use test_db; DROP PROCEDURE IF EXISTS test_procedure_create; CREATE PROCEDURE test_procedure_create() BEGIN select 'test'; END
2、脚本执行时遇到的问题现象
错误详情如下:
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() BEGIN select 'test'; END $$ DELIMITER ; -- 一定要记得还原哦,注意DELIMITER与;之间存在空格
4、效果检验
在SQL控制台中执行修改后的脚本,结果运行正常,如下图所示:
上图表明存储过程已创建成功!
相关文章
- Mybatis之基于XML的调用存储过程与手动回滚事务
- sql serve存储过程
- 本地存储(LocalStorage、SessionStorage、Web SQL Database、Indexed DB)
- PL/SQL 存储过程
- SQL Server存储过程
- 本地存储(LocalStorage、SessionStorage、Web SQL Database、Indexed DB)
- Sql Server 存储过程实例讲解
- SAP ABAP Development Tool 的本地存储原理(local storage)
- oracle与sql server大批量存储过程可以替换部分
- Sql Server 存储过程实例讲解
- Atiitt 使用java语言编写sql函数或存储过程
- Flutter进阶第10篇: 本地存储,封装本地存储类,实现最简单的状态管理
- 【已解决】MySQL - 存储过程SQL中的错误1064 BEGIN DECLARE VAL bigint 1064 -
- 解决多线程调用sql存储过程问题
- 云小课|GaussDB(DWS)数据存储尽在掌控,冷热数据切换自如
- 带你聚焦GaussDB(DWS)存储时游标使用
- SQL存储过程
- 004-Quartz存储与持久化-基于quartz.properties的配置
- lucene .doc里存储的skiplist跳表
- NewSQL——优化的SQL存储引擎(TokuDB, MemSQL)+?
- OpenStack/Gnocchi简介——时间序列数据聚合操作提前计算并存储起来,先算后取的理念
- MySQL创建存储过程(CREATE PROCEDURE)
- 解决多线程调用sql存储过程问题
- 翻开工具箱,海量数据存储处理之各种黑科技
- 擎创工程师实战| ClickHouse存储结构及索引详解
- Android系统信息获取 之一:系统存储信息的获取(RAM,ROM,SDCard)