关于MYSQL的delimiter使用问题

gungod 2011-04-01 12:01:04
在创建存储过程时常用到“delimiter”,
我经常碰到这样一个问题,
写完存储过程脚本执行时,老提示
“SQL ERROR(1064):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 'delimiter' at line 1”;

开始我还老以为是编写的存储过程有问题,
后来我把
DROP PROCEDURE IF EXISTS sp_name;

delimiter //
CREATE PROCEDURE sp_name();
..
delimiter ;

分开执行,就成功了;

这是为什么了呢?

还有时这样也不行,这又是为什么呢?
...全文
1830 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
别人家小孩 2013-09-24
  • 打赏
  • 举报
回复
引用 9 楼 gungod 的回复:
告诉你,你只用delimiter // 不用delimiter ;试试看。
我遇到了一个问题,sql脚本执行报错说语法问题或没有那个表,但是在开发人员的workbench下却能都执行成功,但是用navicat或linux下的mysql执行脚本都出现报错,但是表都能建立起来,却不能用,不知道为什么?
芙蓉石的旋律 2011-04-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 rucypli 的回复:]
在命令行中才用delimiter
[/Quote]
你是试过的吗?在任何管理器中都不行吗?我的在MySQl-Font中也不行。
gungod 2011-04-08
  • 打赏
  • 举报
回复 2
告诉你,你只用delimiter // 不用delimiter ;试试看。
rucypli 2011-04-02
  • 打赏
  • 举报
回复
在命令行中才用delimiter
gungod 2011-04-02
  • 打赏
  • 举报
回复
更意思的是,
我把存储过程剪切掉,换上一行简单语句,执行成功后,
在把原过程贴进去,执行就没问题了。
gungod 2011-04-01
  • 打赏
  • 举报
回复
我在HeidiSQL下执行的,语句肯定没问题呢,
开始我还以为是管理软件的问题,后来换 Navicat for MySQL 试了下后,情况一样。
ACMAIN_CHM 2011-04-01
  • 打赏
  • 举报
回复
你是在什么中执行的?MYSQL命令行?

如果是直接贴出你的原语句。这样别人可以直接测试。
gungod 2011-04-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bjwangzhou 的回复:]
我刚刚遇到了同一问题, 请查看: delimiter 与后缀 // 或 $$ 之间是否留有空格, 应该可以顺利解决问题。
[/Quote]
有空格,我未证实的推测
可能是
DROP PROCEDURE IF EXISTS sp_name;

delimiter //

中间空了一行。
bjwangzhou 2011-04-01
  • 打赏
  • 举报
回复
应留下空格,而不是连写
bjwangzhou 2011-04-01
  • 打赏
  • 举报
回复
我刚刚遇到了同一问题, 请查看: delimiter 与后缀 // 或 $$ 之间是否留有空格, 应该可以顺利解决问题。

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧