Я не верю, что MySQL поддерживает динамический sql. Вы можете делать «подготовленные» заявления, которые похожи, но различны.
Вот пример:
mysql> PREPARE stmt FROM
-> 'select count(*)
-> from information_schema.schemata
-> where schema_name = ? or schema_name = ?'
;
Query OK, 0 rows affected (0.00 sec)
Statement prepared
mysql> EXECUTE stmt
-> USING @schema1,@schema2
+----------+
| count(*) |
+----------+
| 2 |
+----------+
1 row in set (0.00 sec)
mysql> DEALLOCATE PREPARE stmt;
Подготовленные операторы часто используются для просмотра плана выполнения данного запроса. Поскольку они выполняются с помощью команды execute , а переменной sql можно присвоить переменную, некоторые из них могут быть примерно такими же, как динамический sql.
Вот хорошая ссылка об этом:
Не забудьте освободить stmt
, используя последнюю строку!
Удачи!