MySQL创建存储过程

时间:2017-05-15 20:48:19

标签: mysql sql stored-procedures

这个问题可能被标记为重复,但我确实需要帮助。

我已经就此做了很多关于SO的答案,并实施了解决方案,但似乎没有任何效果。

创建存储过程时:

DELIMITER ##
DROP PROCEDURE IF EXISTS sp_AddCity##
CREATE PROCEDURE 'sp_AddCity'(IN aCityName VARCHAR(50))
BEGIN
INSERT INTO City(CityName)
VALUES (aCityName);
END##
DELIMITER ;

我总是收到错误#1064 - 您的SQL语法出错了;检查与您的MySQL服务器版本相对应的手册,以便在“创建程序' sp_AddCity'(IN aCityName VARCHAR(50))”中使用正确的语法。开始插入城市'在第2行。

知道我的语法或错误在哪里?因为我是MySQL的新手,现在已经挣扎了一段时间。

我正在使用MySQL Server并尝试在PHPMyAdmin中使用SQL创建过程。

谢谢

1 个答案:

答案 0 :(得分:0)

从MySQL-CLI开始,按预期创建存储过程:

mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.7.18    |
+-----------+
1 row in set (0.00 sec)

mysql> DELIMITER ##

mysql> DROP PROCEDURE IF EXISTS `sp_AddCity`##
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE PROCEDURE `sp_AddCity`(IN `aCityName` VARCHAR(50))
    -> BEGIN
    ->   INSERT INTO `City`(`CityName`)
    ->   VALUES (`aCityName`);
    -> END##
Query OK, 0 rows affected (0.00 sec)

mysql> DELIMITER ;

mysql> CALL `sp_AddCity`('CityName');
ERROR 1146 (42S02): Table '_.City' doesn't exist

在phpMyAdmin中,您必须设置DELIMITER,如图所示:

phpMyAdmin-Delimiter