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

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

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


person Eric_Chen    schedule 27.09.2011    source источник


Ответы (2)


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

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

person Eric_Chen    schedule 28.09.2011
comment
Имя таблицы 'ОТ?' и другие идентификаторы не могут быть определены в предложении USING. - person Devart; 28.09.2011

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

person Stephane VAROQUI    schedule 30.12.2020