存储过程中的动态MYSQL查询

Posted

技术标签:

【中文标题】存储过程中的动态MYSQL查询【英文标题】:dynamic MYSQL query in stored procedure 【发布时间】:2012-08-25 00:25:38 【问题描述】:

SELECT @query1 := GROUP_CONCAT(CONCAT('SELECT * FROM asterisk.', 表名) SEPARATOR ' UNION ALL ') AS CUSTOMQUERY FROM Information_Schema.tables WHERE table_name LIKE '%custom%'; 从@query1准备stmt;执行语句; DEALLOCATE PREPARE stmt;

..但是在结果的最后我们得到了缺失的查询 像 SELECT * FROM asterisk.custom_70003 UNION ALL SELECT * FROM asterisk.custom_70006 UNION ALL SELECT * FROM asterisk.custom_70007 UNION ALL SELECT * FROM asterisk.custom_70010 UNION ALL SELECT * FROM asterisk.custom_70011 UNION ALL SELECT * FROM asterisk.custom_70042 UNION ALL SELECT * FROM asterisk.custom_70043 UNION ALL SELECT * FRO ..

您的 SQL 语法有错误;检查与您的 mysql 服务器版本相对应的手册,以在第 1 行的“FRO”附近使用正确的语法

所以它给了我错误

..我想在我的 s-s-rS 报告中使用它。和 s-s-rs querybuilder 提示 我作为参数..所以如果我们在程序中使用它将会有好处 对我来说。因为这样我可以轻松地在我的报告中访问它。

【问题讨论】:

【参考方案1】:

你应该增加group_concat_max_len的值。

来自文档:group_concat_max_len 是 GROUP_CONCAT() 函数的最大允许结果长度(以字节为单位)。默认为 1024。

【讨论】:

以上是关于存储过程中的动态MYSQL查询的主要内容,如果未能解决你的问题,请参考以下文章

Mysql基于逻辑在存储过程中动态构建查询字符串

My SQL 动态查询执行并将输出输出到存储过程中的变量中

sql plpgsql存储过程中的动态查询示例

mysql 存储过程

navicat for MySQL中的 查询编辑器中如何执行存储过程?

mysql视图,存储过程,函数,事务,触发器,以及动态执行sql