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