[英]In MySql, how can you Prepare and Execute a Create Procedure
我正在尝试通过Prepare / Execute语句创建MySql存储过程,但出现错误。 我不明白我要打破什么语法。
SET @SourceDBName='dev';
SET @alterstatement=CONCAT('DELIMITER //
CREATE PROCEDURE ',@SourceDBName,'.execute_statement (alterstatement VARCHAR (767))
BEGIN
SELECT @alterstatement;
PREPARE executionstatement FROM @alterstatement;
EXECUTE executionstatement;
END //');
SELECT @alterstatement;
PREPARE executionstatement FROM @alterstatement;
EXECUTE executionstatement;
我收到一个通用语法错误:
09:43:20 PREPARE executionstatement FROM @alterstatement Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER // CREATE PROCEDURE dev.execute_statement (alterstatement VARC' at line 1 0.086 sec
有人可以告诉我我在做什么错吗? 我已经尝试过排除故障,但是还没有解决。
DELIMITER
是官方命令行实用程序的命令 。 您不能在其他地方使用它。
就您而言,您还是不需要它。 PREPARE
语句不接受多个语句:
文本必须表示单个语句,而不是多个语句。
...因此不需要分隔符。 但是,您会收到此错误:
预准备语句协议尚不支持此命令
...因为显然尚不支持 CREATE PROCEDURE
:
以下SQL语句可以用作准备好的语句:
[...]
{CREATE | DROP} INDEX {CREATE | RENAME | DROP} DATABASE {CREATE | DROP} TABLE {CREATE | RENAME | DROP} USER {CREATE | DROP} VIEW
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.