【发布时间】:2011-08-07 21:19:17
【问题描述】:
我有这样的存储过程:
CREATE PROCEDURE ProG()
BEGIN
SELECT * FROM `hs_hr_employee_leave_quota`;
END
但它给出了错误:
#1064- 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的 '' 附近使用正确的语法
错误是什么意思?第 2 行有什么问题?
【问题讨论】:
我有这样的存储过程:
CREATE PROCEDURE ProG()
BEGIN
SELECT * FROM `hs_hr_employee_leave_quota`;
END
但它给出了错误:
#1064- 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的 '' 附近使用正确的语法
错误是什么意思?第 2 行有什么问题?
【问题讨论】:
MYSQL PROCEDURE 步骤:
分隔符 //
创建PROCEDURE,可以参考syntax
注意:不要忘记以 ' 结束语句; '
create procedure ProG() begin SELECT * FROM hs_hr_employee_leave_quota; end;//
分隔符;
调用 ProG();
【讨论】:
这可能是mysql的内存问题 尝试增加 my.ini 中的 max_allowed_packet
【讨论】:
如何找出这个 MySQL 错误的意思:
#1064 - You have an error in your SQL syntax;
这个错误没有任何线索。你必须仔细检查所有这些项目,看看你的错误在哪里:
!@#$%^&*()-_=+[]{}\|;:'",<>/?
select、into 或无数其他关键字。 尽可能多地从损坏的查询中删除,直到它开始工作。然后下次使用具有健全语法报告系统的PostgreSQL。
【讨论】:
key 将其重命名为 key_value 并且有效。谢谢
分隔符,分隔符...
当您的过程中有多个语句时,您确实需要它们。 (换句话说,您的代码中是否有;,然后是更多语句/命令?然后,您需要使用分隔符)。
不过,对于像你这样更简单的程序,你可以这样做:
CREATE PROCEDURE ProG()
SELECT * FROM `hs_hr_employee_leave_quota`;
【讨论】:
在使用触发器、存储过程等之前,您必须更改分隔符。
delimiter //
create procedure ProG()
begin
SELECT * FROM hs_hr_employee_leave_quota;
end;//
delimiter ;
【讨论】: