登录
首页 >  数据库 >  MySQL

MySQL之在储存过程中使用表名为变量

来源:SegmentFault

时间:2023-02-17 13:44:26 275浏览 收藏

你在学习数据库相关的知识吗?本文《MySQL之在储存过程中使用表名为变量》,主要介绍的内容就涉及到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,如下:

新建储存过程sp1

  新建查询,调用该储存过程:

call sp1("user");

运行结果如下:

调用储存过程

  运行成功!

到这里,我们也就讲完了《MySQL之在储存过程中使用表名为变量》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于mysql的知识点!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表