Невозможно использовать оператор prepare для локально объявленной переменной - PullRequest
0 голосов
/ 06 декабря 2018

В процедуре я хочу выбрать значение из определенной таблицы во всех базах данных.Я разработал код и дошел до этой точки:

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 result_query FROM dynamic_query;
EXECUTE result_query;
DEALLOCATE PREPARE result_query;

Есть ли другой способ получить желаемый результат?

PS: я использую SET SESSION group_concat_max_len = 100000000; для расширения лимита group_concat, но я предпочитаю другой способ, потому что число баз данных растет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...