В процедуре я хочу выбрать значение из определенной таблицы во всех базах данных.Я разработал код и дошел до этой точки:
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, но я предпочитаю другой способ, потому что число баз данных растет.