我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

在导入存储过程的时候经常会遇到以下错误:

错误代码:1064

您的 SQL 中有错误;请检查 MySQL 是否有权在第 3 行附近使用“”

(耗时 0 毫秒)

有多少个变量就会报多少次,然后就会报无法检索该变量的错误。

原因是没有定义

下面会报错:

p8()

开始

一个INT;

b 整数;

设置a=5;

设置b=5;

pkid,name,,, 来自 GROUP;

结尾;

错误信息:

错误代码:1064

您的 SQL 中有错误;请检查 MySQL 是否有权在第 3 行附近使用“”

(耗时 0 毫秒)

。 。 。 。

添加后就不会再报错了

//

p8()

开始

一个INT;

b 整数;

设置a=5;

设置b=5;

cur0 for pkid from GROUP;——这里为什么会出现错误?

结尾//

具体原因可以参考MySQL官方手册

#-

创建存储过程部分中的以下内容不容忽视:

以下是使用 OUT 参数的简单存储过程的示例。在此示例中,使用 mysql 客户端命令在定义过程时将语句分隔符从 ; 更改为 //。这允许将过程主体中使用的 ; 分隔符传递给服务器,而不是由 mysql 本身进行解释。

mysql> //

mysql>(输出整数)

-> 开始

-> COUNT(*) 从 t 开始;

-> 结束

-> //

查询成功,0 行(0.00 秒)

mysql>;

mysql> 调用 (@a);

查询成功,0 行(0.00 秒)

mysql> @a;

+------+

|@a|

+------+

| 3 |

+------+

1 行 (0.00 秒)

使用命令时,应避免使用反斜杠('\')字符,因为这是 MySQL 转义字符。

以下是一个接受参数、使用 SQL 函数执行操作并返回结果的函数示例:

mysql> //

mysql> 你好 (s CHAR(20)) CHAR(50)

-> ('你好,',s,'!');

-> //

查询成功,0 行(0.00 秒)

mysql>;

mysql> 你好('world');

+----------------+

| 你好('世界')|

+----------------+

| 你好,世界!|

+----------------+

1 行 (0.00 秒)

如果存储函数中的语句返回的值的类型与函数的 子句中指定的类型不同,则返回值将被强制转换为适当的类型。例如,如果函数返回 ENUM 或 SET 值,但语句返回整数,则函数返回的值是 SET 成员的相应 ENUM 成员的字符串。

以下内容也解释了这个问题

20.2.7. BEGIN...END 复合语句

[:] 开始

[]

结尾 []

存储子程序可以使用 BEGIN ... END 复合语句包含多个语句。它表示一个或多个语句的列表。其中的每个语句都必须以分号 (;) 结尾。

复合语句可以标记。除非存在,否则不能给出,如果两者都存在,则它们必须相同。

请注意,可选的 [NOT] 子句尚不受支持。这意味着在指令块的开头没有设置交互式保存点,并且上下文中使用的 BEGIN 子句对当前交互式操作没有影响。

使用多个语句需要客户端能够发送包含语句分隔符 ; 的查询字符串。此符号由命令行客户端中的命令处理。将查询结束分隔符 ; 更改为 //(例如)允许在子例程主体中使用 ;。

总结一下,是因为存储过程中有很多语句使用了默认分隔符“;”,如果不重新定义分隔符,只能以“;”为分隔符,逐句发送到MySQL服务器进行解析,那么存储过程的第一句肯定是语法错误的:

p8()

开始

一个INT;

然后是以下内容

b 整数;

它还会报错,因为手册规定它必须出现在BEGIN和EDN之间,且在所有其他语句之前。单个b INT;会报语法错误。

你现在明白了...

二维码
扫一扫在手机端查看

本文链接:https://by928.com/2649.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线