如何在MySQL存储过程中使用动态SQL

如何在MySQL存储过程中使用动态SQL

如何在MySQL存储过程中构建和使用动态SQL?



一只名叫tom的猫
浏览 860回答 3
3回答

跃然一笑

我不相信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;准备好的语句通常用于查看给定查询的执行计划。因为它们是用执行命令和SQL可以分配给一个变量,您可以近似于一些与动态SQL相同的行为。这里有个好东西链接关于这一点:不要忘记释放stmt用最后一行!祝好运!

呼如林

可以使用用户定义的变量在动态语句之外传递。Server version: 5.6.25-log MySQL Community Server (GPL)mysql> PREPARE stmt FROM 'select "AAAA" into @a';Query OK, 0 rows affected (0.01 sec)Statement preparedmysql> EXECUTE stmt;Query OK, 1 row affected (0.01 sec)DEALLOCATE prepare stmt;Query OK, 0 rows affected (0.01 sec)mysql> select @a;+------+| @a   |+------+|AAAA  |+------+1 row in set (0.01 sec)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL