我有这个表(名为沙盒):如何在MySQL中用一个输入变量声明存储过程?
+----+-----------+---------+
| ID | statecode | country |
+----+-----------+---------+
| 1 | ITA | Italy |
| 2 | ESP | Spain |
| 3 | GER | Germany |
| 4 | ESP | Espana |
+----+-----------+---------+
我试图创建一个存储过程,它使我从一个参数(statecode)所有的国名。
例如
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 - 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 'END' at line 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 - 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 'DELIMITER' at line 1
尽管错误消息SP已创建并完美工作。
我修改了所有的答案代码,现在它的工作原理。奇怪的事实是,当我执行代码来创建它时,它仍然给我一个错误消息。我在第一个问题中发布了用于创建SP的代码。 – Nicolaesse