簡體   English   中英

在mysqladmin中創建存儲過程?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM