无法在本地声明的变量上使用prepare语句

时间:2018-12-06 08:28:10

标签: mysql stored-procedures

在一个过程中,我想从所有数据库的特定表中选择一个值。我开发了代码并达到了这一点:

BEGIN
DECLARE dynamic_query LONGTEXT;

SET SESSION group_concat_max_len = 100000000;


SET dynamic_query = (
    SELECT
        GROUP_CONCAT(
            "SELECT option_name AS _key, option_value as _value from ",
            TABLE_NAME, 
            " where option_name like '",
            "something%'" SEPARATOR ' union ') 
    FROM 
        (
            SELECT
                CONCAT(`database_name`,'.',`table_prefix`,'options') as TABLE_NAME 
            FROM `tablename`
            WHERE `database_name` <> '' AND `table_prefix` <> ''
        ) AS tmp

);
SELECT dynamic_query;

END

然后复制输出并执行它,效果很好。但是,当我添加如下所示的prepare语句时,出现了this bug中提到的错误。

PREPARE result_query FROM dynamic_query;
EXECUTE result_query;
DEALLOCATE PREPARE result_query;

还有其他方法可以获取所需的输出吗?

P.S .:我正在使用SET SESSION group_concat_max_len = 100000000;来扩展group_concat的限制,但是我更喜欢另一种方式,因为数据库的数量正在增长。

0 个答案:

没有答案