mysql - #1064 错误 SQL - 发生在我的所有过程/函数上

标签 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 - 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/

相关文章:

mysql - 搜索以字符串格式提供的数字范围内的数字(MySQL)

mysql - MySQL 有没有办法禁止未索引的查询?

mysql - 前端 SQL 搜索 - 动态检查相似值?

php - 一次查询查询 4 ​​个 MySQL 表

Mysql 查询执行时间太长。为什么?

php - PDO 选择行

php - Laravel 查询生成器上的子查询 Where 条件

mysql - ORDER BY soundex 与 WHERE (MySql)

sql - 在现有表中创建序列并复制行

mysql - SQL语句-比较两个表的列