输入MYSQL存储过程的正确方法是什么?

时间:2015-07-30 15:18:05

标签: mysql stored-procedures mariadb

我阅读了文档,似乎为了有一个存储过程,我必须输入一些命令如下:

DELIMITER //

CREATE PROCEDURE
myDB.RoutingName                        /* Routine name */
(IN parameter_1_id INTEGER)                 /* Parameter list */

BEGIN                                           /* Routine body */
SELECT * FROM mytable WHERE id = parameter_1_id 
END;

DELIMITER ;

我尝试将上面的行输入到文件中,然后将它们复制/粘贴到phpmyadmin SQL部分以将其提供给MYSQL服务器,但是我收到语法错误。

我想知道输入存储过程的正确方法是什么?特别是当它们很大并且由许多线组成时?

2 个答案:

答案 0 :(得分:2)

你需要一个;在查询之后,END之后的分隔符应该是您首先指定的分隔符。

DELIMITER //

CREATE PROCEDURE
myDB.RoutingName                        /* Routine name */
(IN parameter_1_id INTEGER)                 /* Parameter list */

BEGIN                                           /* Routine body */
SELECT * FROM mytable WHERE id = parameter_1_id;
END//
DELIMITER ;

答案 1 :(得分:0)

好的,我确实找到了答案。

输入存储过程的最佳方法是将其保存到以下文件中:

myprocedure.sql

然后保存SQL语句,如:

DELIMITER //

CREATE PROCEDURE
myDB.RoutingName                            /* Routine name */
(IN parameter_1_id INTEGER)                 /* Parameter list */

BEGIN                                             /* Routine body */
SELECT * FROM mytable WHERE id = parameter_1_id;  /* first statement */ 
SELECT * FROM mytable WHERE id = parameter_1_id;  /* second statement */
       /* Loops and other statement go here, each separated by a ; */
END//
DELIMITER ;

然后转到命令行并发出:

$ mysql -u username -p < myprocedure.sql

输入您的密码,现在保存您的程序。 从现在开始,您可以通过在MYSQL客户端shell提示符中发出CALL命令来调用该过程。