#1064错误SQL - 发生在我的所有程序/功能上

时间:2018-03-21 08:50:25

标签: mysql sql

我知道这个问题已被问过不同形式的一堆,但我所看到的(相当多)没有一个似乎在我的具体案例中帮助我。我写了一些函数和程序,我总是在同一个地方得到同样的错误。这是我的代码:

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 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法

     

靠近' CREATE PROCEDURE STUDENTS_BY_STATUS(sts VARCHAR(10))       开始       选择BannerId,'在第2行

在我的另一个上:

  

1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法

     

near' CREATE FUNCTION GoodGrade(letGrade VARCHAR(2))RETURNS int       开始           DECLARE v'在第2行

无论我是否使用|都会发生这种情况或者//作为DELIMITER ......有人可以告诉我这里我做错了什么吗?谢谢!

1 个答案:

答案 0 :(得分:1)

你已经更改了分隔符,编写了一个语句,然后根据你的新定义没有分隔它

更改行

DROP PROCEDURE IF EXISTS STUDENTS_BY_STATUS;

DROP PROCEDURE IF EXISTS STUDENTS_BY_STATUS |

更新

这在初始错误消息中并不明显,但在过程定义后重置分隔符时出现另一个错误。你需要一个空格';'那个。

所以改变

DELIMITER;

DELIMITER ;

NB “;”的另一个用途在您的过程定义中是正确的,因为您希望一起处理create语句中的所有内容。