繁体   English   中英

在MySql中,如何准备和执行创建过程

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM