我正在尝试在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
但这会产生语法错误。但是相同的代码在我的本地机器上运行良好。 如果您对如何解决这个问题有任何想法,请告诉我。非常感谢任何帮助或建议。
答案 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/