[英]Create stored procedure in mysqladmin?
我正在嘗試在 mysql admin 中創建存儲過程。 我在 POWWEB.com 上托管一個網站。 為此,我試圖在 mysqladmin 中創建存儲過程。
Mysql 版本是 5.0.45。 我只能用 1 行代碼創建一個存儲過程。
CREATE PROCEDURE TEST(input INT)
INSERT INTO TEST(COL1) VALUES(input);
但這沒有用。 我想寫一個帶有更多命令的存儲過程。 所以我試着做
CREATE PROCEDURE TEST(input INT)
BEGIN
INSERT INTO TEST(COL1) VALUES(input);
INSERT INTO TEST1(COL1) VALUES(input);
INSERT INTO TEST2(COL1) VALUES(input);
END
但這會導致語法錯誤。 但是相同的代碼在我的本地機器上運行良好。 如果您對如何解決此問題有任何想法,請告訴我。 非常感謝任何幫助或建議。
默認分隔符是;
,因此它將代碼解釋為多個查詢,這顯然不起作用。 嘗試這樣的事情:
delimiter //
CREATE PROCEDURE TEST(input INT)
BEGIN
INSERT INTO TEST(COL1) VALUES(input);
INSERT INTO TEST1(COL1) VALUES(input);
INSERT INTO TEST2(COL1) VALUES(input);
END//
忽略 PHPMyAdmin,它和摩托車煙灰缸一樣沒用。 登錄到您的 shell 並使用 mysql 命令行界面,這是編寫 mysql 腳本的唯一可支持的正確方法。
DELIMITER 命令不是 mysql 服務器命令,而是 mysql 命令行客戶端命令。 要使用它,您必須使用正確的 mysql 命令行客戶端。
否則很難(盡管並非不可能)創建存儲過程。
最佳答案只是@Barry 的評論:
當在它周圍放置一個 BEGIN .. END塊時,具有多個查詢的存儲過程工作正常。 — 巴里·斯塔斯
另外,把;
在每個查詢結束時。
例子:
BEGIN
INSERT INTO passenger (fname,lname,tel,ID,sex)
VALUES (fname,lname,tel,ID, sex);
INSERT INTO passenger
select * from reservation where 1;
END
在 phpMyAdmin 的 SQL 編輯器中,您可以在標記為“分隔符”的表單字段中設置分隔符。 它是默認的。 將其設置為您喜歡的任何內容,不要在 SQL 中輸入分隔符 // 而是使用分隔符作為 END// 結束 sql,其中 // 是您選擇的分隔符。
MySQL 管理員已過時。 請使用MySQL 工作台以獲得更多功能和豐富的基於GUI的操作。 https://www.mysql.com/products/workbench/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.