MySQL之在储存过程中使用表名为变量
我们知道,在MySQL的储存过程中,一般的输入参数为各种数据类型,如数值型,字符型等。那么,能不能让输入参数等于表名呢?答案是肯定的,那就是使用MySQL提供的PREPARE语法。
关于PREPARE的具体使用方法,可以参考网址:https://dev.mysql.com/doc/ref... .本文将会给出一个在MySQL的储存过程中使用表名为变量的例子。
打开Navicat For MySQL,在新建查询中,创建示例的储存过程sp1,代码如下:
DROP PROCEDURE IF EXISTS sp1; DELIMITER ;; CREATE PROCEDURE sp1(IN temp varchar(30)) BEGIN #Routine body goes here... SET @sqlStr:=CONCAT("select * from ",temp); PREPARE stmt from @sqlStr; EXECUTE stmt; DEALLOCATE PREPARE stmt; END ;; DELIMITER ;
该储存过程使用temp为表名,将查询语句“select * from ” , temp拼接为字符串,赋值给sqlStr变量,再用PREPARE将该字符串转化为MySQL脚本中的Prepared Statements stmt, 然后执行stmt即可获得输出结果。最后通过DEALLOCATE释放该Prepared Statements.
运行该查询语句,可发现新建了储存过程sp1,如下:
新建查询,调用该储存过程:
call sp1("user");
运行结果如下:
运行成功!
相关推荐
ltd00 2020-09-12
CoderToy 2020-11-16
emmm00 2020-11-17
王艺强 2020-11-17
ribavnu 2020-11-16
bianruifeng 2020-11-16
wangshuangbao 2020-11-13
苏康申 2020-11-13
vivenwan 2020-11-13
moyekongling 2020-11-13
云中舞步 2020-11-12
要啥自行车一把梭 2020-11-12
aydh 2020-11-12
kuwoyinlehe 2020-11-12
minerk 2020-11-12
vitasfly 2020-11-12
jazywoo在路上 2020-11-11
敏敏张 2020-11-11