MySql 立即创建函数解决方案

标签 mysql stored-procedures

create function COMP_STMT(activeSTMT varchar(200),activeSQL varchar(200)) RETURNS INT
    BEGIN
        PREPARE activeSTMT from activeSQL;
        EXECUTE activeSTMT;
        DEALLOCATE PREPARE activeSTMT;
        return 1;
    END;

错误:

ERROR 1064 (42000) at line 1: 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 '@activeSTMT from @activeSQL' at line 3

如何解决?

最佳答案

您需要使用字符串文字或包含语句文本的用户变量才能与 Mysql 中的 PREPARE/EXECUTE 语句一起使用。

BEGIN
 set @actSQL= activeSQL;
 PREPARE stmt FROM @actSQL;
 EXECUTE stmt;
 DEALLOCATE PREPARE stmt;
END 

关于MySql 立即创建函数解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29204138/

相关文章:

sql-server - 多表复杂实体的乐观并发

Java CallableStatement registerOutParameter,它有什么作用?

mysql - mysql触发插入后插入错误

mysql - 查询以在下午 1 点之后显示行

php - 如果结果为空,则调用第二个查询

sql-server - 如何查找包含 <text> 的存储过程?

mysql - 将值从 MySQL 中的一个表复制到另一个表

sql-server - SQL Server 存储过程和 Linq-to-SQL

SQL Server : Invalid Column Name

mysql - 锁定表以从 MySQL InnoDB 存储过程进行插入