我有这个表(名为Sandbox):
+----+-----------+---------+
| ID | statecode | country |
+----+-----------+---------+
| 1 | ITA | Italy |
| 2 | ESP | Spain |
| 3 | GER | Germany |
| 4 | ESP | Espana |
+----+-----------+---------+
我正在尝试创建一个存储过程,它从一个参数(状态代码)中提供所有国家/地区名称。
例如
CALL GetCountryNameFromCode('ITA');
应该返回"意大利"
CALL GetCountryNameFromCode('ESP');
应该返回"西班牙","西班牙"
关注this guide我写了以下代码:
DELIMITER //
CREATE PROCEDURE GetCountryNameFromCode (IN MyStateCode varchar(3))
BEGIN
SELECT country
FROM Sandbox
WHERE statecode = MyStateCode
END; //
DELIMITER ;
但是当我执行它时,phpMyAdmin给了我以下错误:
#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法 靠近' END'在第6行
我的代码出了什么问题? 我正在运行MySQL版本5.6.30 - 源代码分发(MacOS上的AMPPS)
==============================编辑================ ==============
现在我正在运行这个:
DELIMITER //
CREATE PROCEDURE GetCountryNameFromCode (IN MyStateCode varchar(3))
BEGIN
SELECT country
FROM Sandbox
WHERE statecode = MyStateCode;
END //
DELIMITER ;
这给了我以下错误:
#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法 靠近' DELIMITER'在第1行
尽管出现了错误消息,但SP已经创建并且运行正常。
答案 0 :(得分:1)
你需要在select语句结束后加一个分号来表示语句的结束,并且需要在this.game.world.setBounds(0, 0, this.game.width, this.game.height);
关键字之后删除分号,因为end
终止了存储的proc'代码。
有关详细信息,请参阅defining stored procedures上的mysql手册。
答案 1 :(得分:1)
首先,表中的列是" county"不是"国家"。 其次,你需要放一个;在你的where子句之后:
WHERE statecode = MyStateCode;
答案 2 :(得分:1)
试试这个:
DELIMITER $$
DROP PROCEDURE IF EXISTS `GetCountryNameFromCode` $$
CREATE PROCEDURE `GetCountryNameFromCode`(IN MyStateCode varchar(3))
BEGIN
SELECT country
FROM Sandbox
WHERE statecode = MyStateCode;
END $$
DELIMITER ;