为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

一只名叫tom的猫 2019-06-11 13:17:44
如何在MySQL存储过程中使用动态SQL如何在MySQL存储过程中构建和使用动态SQL?
查看完整描述

3 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

我不相信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用最后一行!

祝好运!


查看完整回答
反对 回复 2019-06-11
?
呼如林

TA贡献1798条经验 获得超3个赞

可以使用用户定义的变量在动态语句之外传递。


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 prepared


mysql> 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)


查看完整回答
反对 回复 2019-06-11
  • 3 回答
  • 0 关注
  • 859 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信