mysql使用存储过程创建动态表名及参数处理
2021/12/24 19:07:33
本文主要是介绍mysql使用存储过程创建动态表名及参数处理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
关于mysql的存储如何创建和使用:点击这里存储过程创建与使用有说明
直接上干货,我这里直接使用的是带有参数的创建
SQL如下:
DELIMITER $ CREATE PROCEDURE spatialStored(IN years VARCHAR(32)) BEGIN -- 创建动态表,获取当前日期 SET @sql_create_table = CONCAT( 'CREATE TABLE IF NOT EXISTS sx_test_a', DATE_FORMAT(CURDATE(),'%Y_%c'), "( `id` int(11) NOT NULL AUTO_INCREMENT, `number` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '编号', `indexes` int(11) DEFAULT NULL COMMENT '索引', `date_time` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '时间', `monitor_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '监测因子', `monitor_value` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '监测值', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci" ); PREPARE sql_create_table FROM @sql_create_table; EXECUTE sql_create_table; -- 动态插入语句 SET @number = '编号001', @indexes = 1, @dateTime = years, @monitorName = '氮气', @monitorValue = '11.2345'; SET @sql_oper_revcord = CONCAT( "INSERT INTO sx_test_a", DATE_FORMAT(CURDATE(),'%Y_%c'), " (`number`, `indexes`, `date_time`, `monitor_name`, `monitor_value`) values (@number, @indexes, @dateTime, @monitorName, @monitorValue)"); PREPARE sql_oper_revcord FROM @sql_oper_revcord; EXECUTE sql_oper_revcord; END $ -- 执行存储过程 CALL spatialStored('2021-12-24 00:00:00');
效果如下:
详解:创建存储过程的语法就不用多说了,挑一些过程里面的内容解释一下
sx_test_a是基础表,这没什么好说的
SET @sql_create_table = CONCAT(‘xxx’,‘xxx’,…) 这里可以理解为,声明了一个名为@sql_create_table的变量,我们给这个变量赋值为 = 等号后面的内容
CONAT():是字符串拼接的函数
DATE_FORMAT():用于处理日期数据所展示的格式
CURDATE():返回当前的日期
PREPARE sql_create_table FROM @sql_create_table; 执行预定义的sql
EXECUTE sql_create_table; 释放掉数据库连接SET @number = ‘编号001’, @indexes = 1 这里要注意点是,number是字符类型,所以给的要是字符类型,如果类型不一致会抛出字段值插入不进去,执行异常。indexes为int类型,所以给的是数值类型,保证建表的类型与插入声明的变量使用的类型一致
@dateTime = years 使用调用过程带来的参数
这篇关于mysql使用存储过程创建动态表名及参数处理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-15MySQL教程:初学者必备的MySQL数据库入门指南
- 2024-11-15MySQL教程:初学者必看的MySQL入门指南
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程