- 8
- 0
- 约2.74千字
- 约 3页
- 2021-01-11 发布于天津
- 举报
mysql存储过程中用变量做表名
1.用变量做表名: 简单的用 set 或者 declare 语句定义变量,然后直接作为 sql 的表名是不行的, mysql 会把变 量名当作表名。 在其他的 sql 数据库中也是如此, mysql 的解决方法是将整条 sql 语句作为变 量,其中穿插变量作为表名,然后用 sp_executesql 调用该语句。
这在 mysql5.0 之前是不行的, 5.0 之后引入了一个全新的语句,可以达到类似 sp_executesql 的功能(仅对 procedure 有效, function 不支持动态查询) :
PREPARE stmt_name FROM preparable_stmt;
EXECUTE stmt_name [USING @var_name [, @var_name] ...]; {DEALLOCATE | DROP} PREPARE stmt_name;
为了有一个感性的认识,
下面先给几个小例子: mysql PREPARE stmt1 FROM SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse; mysql SET @a = 3;
mysql SET @b = 4;
mysql EXECUTE stmt1 USING @a, @b;
TOC \o 1-5 \h \z + +
| hy
原创力文档

文档评论(0)