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