MySQL存储过程:表名为变量
来源:互联网 发布:单片机与plc区别 编辑:程序博客网 时间:2024/06/08 10:13
如果一个存储过程的变化的部分只有表名的部分,我们可以给存储过程传入这个表名。这就需要我们承接一下传入的参数,然后使用PREPARE了,关于PREPARE,需要参考官方文档来解释一下,这里先贴上解决问题的代码:
DELIMITER $$USE `reptail`$$DROP PROCEDURE IF EXISTS `updateTest`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `updateTest`(IN table_name VARCHAR(50))BEGIN SET @tbl_name=CONCAT("",table_name); SET @statement = CONCAT("UPDATE ",@tbl_name," AS c,`x1` AS b SET c.`hello` = b.`world` WHERE c.`id` = b.`uuid`; "); PREPARE stmt FROM @statement; EXECUTE stmt; SET @statement = CONCAT("UPDATE ",@tbl_name," AS c,`x2` AS b SET c.`hello` = b.`world` WHERE c.`id` = b.`uuid`; "); PREPARE stmt FROM @statement; EXECUTE stmt; SET @statement = CONCAT("UPDATE ",@tbl_name," AS c,`x3` AS b SET c.`hello` = b.`world` WHERE c.`id` = b.`uuid`; "); PREPARE stmt FROM @statement; EXECUTE stmt; SET @statement = CONCAT("UPDATE ",@tbl_name," AS c,`x4` AS b SET c.`hello` = b.`world` WHERE c.`id` = b.`uuid`; "); PREPARE stmt FROM @statement; EXECUTE stmt; SET @statement = CONCAT("UPDATE ",@tbl_name," AS c,`x5` AS b SET c.`hello` = b.`world` WHERE c.`id` = b.`uuid`; "); END$$DELIMITER ;
问题解决了,那么,何为PREPARE呢?时至2017年8月24日20:11:48,官方的手册的解释是:
The PREPARE statement prepares a SQL statement and assigns it a name, stmt_name, by which to refer to the statement later. The prepared statement is executed withEXECUTE and released with DEALLOCATE PREPARE.
翻译为中文的大概意思就是:
PREPARE语句准备一个SQL的statement,并且,它会给这个statement一个名字以便我们之后引用。我们可以使用EXECUTE语句执行这个准备好的statement,也可以使用DEALLOCATE PREPARE来释放掉它。
祝福大家编程顺利,没有bug~
参考:
mysql存储过程中用变量做表名
MYSQL存储过程中 表名 使用变量
MySQL :: MySQL 5.7 Reference Manual :: 13.5.1 PREPARE Syntax
阅读全文
0 0
- MySQL存储过程:表名为变量
- 存储过程调用表名为变量...(含基本sql语法说明)
- 解决存储过程中表名为变量的问题
- 存储过程 新建表 表名为参数
- mysql 存储过程变量拼接
- 读书笔记-MySQL存储过程-变量
- mysql存储过程 预处理变量
- MySql存储过程—变量
- mysql 变量使用,存储过程
- MYSQL存储过程中 表名 使用变量
- 存储过程 以列名为参数
- mysql:用户变量、系统变量、局部变量(存储过程中的)
- 表名为变量view_name ,字段名为变量col_name的查询
- MYSQL存储过程中 使用变量 做表名
- MySql存储过程—3、变量
- mysql 存储过程的学习【1】 变量
- Mysql存储过程--变量,参数,注释
- MySql存储过程—3、变量
- MySQL存储过程:实现更新UUID
- 35:字符串的展开
- MySQL:有关联的两张表重新生成主键如何关联
- NAT网络转换
- LeetCode:658. Find K Closest Elements程序分析
- MySQL存储过程:表名为变量
- 继承的应用举例-自定义异常类
- Effective Java(用函数对象表示策略、优先使用静态成员类)
- 访问控制列表-ACL
- 面试中,数据库经常用到的DQL,DML,DCL,DDL,TPL(TCL)的定义
- 使用ReentrantLock两个方法的互斥访问
- SQLyog:如何在不同数据库之间复制表
- C++基础-友元函数和继承派生
- 管理员已阻止你运行此应用