我知道这个问题已经以不同的形式被问了很多次,但我看过的(相当多的)问题似乎都不能帮助我解决我的具体情况。我编写了一些函数和过程,但总是在同一位置出现相同的错误。这是我的代码:
DELIMITER |
DROP PROCEDURE IF EXISTS STUDENTS_BY_STATUS;
CREATE PROCEDURE STUDENTS_BY_STATUS (sts VARCHAR(10))
BEGIN
SELECT BannerId, Name FROM STUDENT WHERE Status = sts;
END |
DELIMITER;
这发生在我的所有程序函数上,此错误:
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 'CREATE PROCEDURE STUDENTS_BY_STATUS (sts VARCHAR(10)) BEGIN SELECT BannerId,' at line 2
在我的另一张上是这样的:
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 'CREATE FUNCTION GoodGrade(letGrade VARCHAR(2)) RETURNS int BEGIN DECLARE v' at line 2
无论我是否使用|,都会发生这种情况或//作为分隔符...有人可以告诉我我在这里做错了什么吗?谢谢!
最佳答案
您更改了分隔符,编写了一条语句,但没有根据新定义对其进行分隔
换行
DROP PROCEDURE IF EXISTS STUDENTS_BY_STATUS;
到
DROP PROCEDURE IF EXISTS STUDENTS_BY_STATUS |
更新
从最初的错误消息来看,这一点并不明显,但是当您在过程定义之后重置分隔符时,会出现另一个错误。 ';' 之前需要一个空格就那个。
所以改变
DELIMITER;
至
DELIMITER ;
注意 ';'的另一种用法在您的过程定义中是正确的,因为您希望将 create 语句中的所有内容一起处理。
关于mysql - #1064 错误 SQL - 发生在我的所有过程/函数上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49401760/