繁体   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