gpt4 book ai didi

存储过程中的 MySQL PREPARE 语句

转载 作者:可可西里 更新时间:2023-11-01 07:45:59 25 4
gpt4 key购买 nike

我有这个 sql 文件:

USE mydb;

DROP PROCEDURE IF EXISTS execSql;
DELIMITER //
CREATE PROCEDURE execSql (
IN sqlq VARCHAR(5000)
) COMMENT 'Executes the statement'
BEGIN
PREPARE stmt FROM sqlq;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END //
DELIMITER ;

当我尝试运行它时

#cat 文件.sql | mysql -p

我明白了

ERROR 1064 (42000) at line 6: 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 'sqlq;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END' at line 5

我做错了什么?

最佳答案

您只能准备和执行字符串文字user-defined variable 的SQL包含声明的文本。

试试这个:

USE mydb;

DROP PROCEDURE IF EXISTS execSql;
DELIMITER //

CREATE PROCEDURE execSql (IN sqlq VARCHAR(5000)) COMMENT 'Executes the statement'
BEGIN
SET @sqlv = sqlq;
PREPARE stmt FROM @sqlv;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END //

DELIMITER ;

关于存储过程中的 MySQL PREPARE 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5895383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com