我有這個表(名爲沙盒):如何在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