我有这样的存储过程:
CREATE PROCEDURE ProG()
BEGIN
SELECT * FROM `hs_hr_employee_leave_quota`;
END
但它给出了错误:
- 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本对应的手册,了解在第 3 行的 '' 附近使用的正确语法#1064
错误是什么意思?第 2 行有什么问题?
在使用触发器、存储过程等之前必须更改分隔符。
delimiter //
create procedure ProG()
begin
SELECT * FROM hs_hr_employee_leave_quota;
end;//
delimiter ;
如何找出这个 MySQL 错误试图表达的意思:
#1064 - You have an error in your SQL syntax;
这个错误没有任何线索。你必须仔细检查所有这些项目,看看你的错误在哪里:
!@#$%^&*()-_=+[]{}\|;:'",<>/?
select
、into
或无数其他关键字。 尽可能多地从损坏的查询中删除,直到它开始工作。然后下次使用具有健全语法报告系统的 PostgreSQL。
定界符,定界符...
当你的程序中有多个语句时,你真的需要它们。 (换句话说,您的代码中是否有
;
,然后是更多的语句/命令?然后,您需要使用分隔符)。
对于像你这样简单的程序,你可以这样做:
CREATE PROCEDURE ProG()
SELECT * FROM `hs_hr_employee_leave_quota`;
这可能是 mysql 的内存问题 尝试增加 my.ini 中的 max_allowed_packet
MYSQL 过程步骤:
分隔符 //
create PROCEDURE,可以参考syntax
注意:不要忘记以 ' 结束语句; '
create procedure ProG() begin SELECT * FROM hs_hr_employee_leave_quota; end;//
定界符;
调用 ProG();
我在下面遇到了同样的错误:
ERROR 1064 (42000):你的SQL语法有错误;检查 与您的 MySQL 服务器版本相对应的手册 在第 3 行的 ')' 附近使用的语法
当使用尾随逗号时,如下所示:
create table person(
name varchar(50),
); -- ↑ A trailing comma
所以,我删除了结尾的逗号,如下所示,然后错误就解决了:
create table person(
name varchar(50)
); -- ↑ No trailing comma
而且,我在下面也遇到了同样的错误:
ERROR 1064 (42000):你的SQL语法有错误;检查 与您的 MySQL 服务器版本相对应的手册 在第 1 行的 'count( num int )' 附近使用的语法
当"count"和"("如下图,因为它被识别为"count()",这是MySQL中的内置函数:
-- No space
↓
create table count(
num int
);
于是,我在"count"和"("之间做了一个空格如下图,然后错误就解决了:
-- Make a space
↓
create table count (
num int
);