Есть ли способ динамического выполнения кода в MySQL, похожий на "немедленное выполнение" в Oracle?

Подобно EXECUTE IMMEDIATE в Oracle, есть ли способ выполнить код динамически в хранимой процедуре MySQL?

Я действительно хочу использовать подготовленный оператор в хранимой процедуре MySQL, чтобы генерировать новый оператор SQL в каждой итерации цикла.

2 ответа

MariaDB поддерживает EXECUTE IMMEDIATE, поскольку документ размером 10,2 КБ: https://mariadb.com/kb/en/execute-immediate/

На самом деле это не работает так, как я написал. Я просто код, как:

set @preparedstmt = concat('SELECT tid, LENGTH(message) len FROM ? where tid=? and first=1');
prepare stmt from prepared_stmt;
execute stmt using v_tid;
drop prepare stmt;

Просто позаботьтесь об имени таблицы, оно не должно заменяться заполнителем. Так что @preparedstmt должен быть сгенерирован с помощью метода concat для создания оператора, который просто заменяет параметры в условиях заполнителем, а не именем таблицы.

Другие вопросы по тегам