在mysqladmin中创建存储过程?

时间:2009-12-12 11:03:16

标签: mysql stored-procedures mysqli phpmyadmin

我正在尝试在mysql admin中创建存储过程。我在POWWEB.com上主持一个网站。为此我试图在mysqladmin中创建存储过程。

Mysql版本是5.0.45。我只能用一行代码创建一个存储过程。

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

但这会产生语法错误。但是相同的代码在我的本地机器上运行良好。 如果您对如何解决这个问题有任何想法,请告诉我。非常感谢任何帮助或建议。

5 个答案:

答案 0 :(得分:2)

默认分隔符为;,因此它将代码解释为多个查询,这显然不起作用。尝试这样的事情:

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//

答案 1 :(得分:1)

忽略PHPMyAdmin,它与摩托车烟灰缸一样无用。登录到shell并使用mysql命令行界面,这是mysql编写脚本的唯一可支持的正确方法。

DELIMITER命令不是mysql服务器命令,它是一个mysql命令行客户端命令。要使用它,您必须使用正确的mysql命令行客户端。

否则很难(尽管不是不可能)创建存储过程。

答案 2 :(得分:1)

在phpMyAdmin中,在SQL编辑器中,您可以在标有“delimiter”的表单字段中设置分隔符。它是默认的。将它设置为你喜欢的任何东西,不要在你的SQL中输入分隔符//但是以你的分隔符结束sql为END //其中//是你选择的分隔符。

答案 3 :(得分:1)

最佳答案就是@ Barry的评论:

  

放置BEGIN时,多次查询的存储过程正常工作..结束   围绕它阻止。     - 巴里斯塔斯

另外,;放在每个查询的末尾

示例:

BEGIN
    INSERT INTO passenger (fname,lname,tel,ID,sex)
    VALUES (fname,lname,tel,ID, sex);
    INSERT INTO passenger 
    select * from reservation where 1;
END

答案 4 :(得分:0)

MySQL管理员过时。请使用 MySQL工作台获取更多功能以及丰富的GUI 操作。 https://www.mysql.com/products/workbench/