mysql动态传入表名存储过程_关于mysql存储过程创建动态表名及参数处理
mysql动态传⼊表名存储过程_关于mysql存储过程创建动态表
名及参数处理
⽹上了好多动态创建表名以及参数处理的博客,但是写的都差强⼈意!⾃⼰也是⼀个刚⼊门没⼏个⽉的⼩⽩,⼀直⾃⼰百度以后能有⼀个规范完整能执⾏下来学习的代码!今天我在这⾥按照⼀些⾃⼰的学习以及对别⼈的博客理解在这⾥写⼏个测试例⼦,仅供参考......中级会计职称报名入口
prepare
前⼏天写项⽬的时候,有⽤到存储过程,需要在存储过程中创建⼀张临时表,然和在动态增减临时表的字段,所以就⽤到了mysql的prepare预编译语句。
基本语法:PREPARE stmt from '你的sql语句';
1立方米等于多少立方分米EXECUTE stmt (如果sql有参数的话, USING xxx,xxx); // 这⾥USING的只能是会话变量
老人与海鸥课文DEALLOCATE PREPARE stmt;
这三句话分别就是预定义好sql.
借条的诉讼时效
执⾏预定义的sql
释放掉数据库连接
Truncate
删除表中的数据的⽅法有delete,truncate, 其中TRUNCATE TABLE⽤于删除表中的所有⾏,⽽不记录单个⾏删除操作。TRUNCATE TABLE 与没有 WHERE ⼦句的 DELETE 语句类似;但是,TRUNCATE TABLE 速度更快,使⽤的系统资源和事务⽇志资源更少
具体使⽤CREATE DEFINER=`root`@`%` PROCEDURE `create_date_table`()
BEGIN
set @sql_create_table = concat(
'CREATE TABLE IF NOT EXISTS operrecord_', date_format(curdate(),'%y%m%d'),
"(
`oper_id` int(10) NOT NULL AUTO_INCREMENT,
`oper_role` int(11) NOT NULL,
`oper_type` varchar(30) NOT NULL DEFAULT '',
`oper_content` varchar(1000) NOT NULL DEFAULT '',
`oper_cls` int(10) NOT NULL DEFAULT '0',
`oper_date` datetime NOT NULL,
`oper_serverid` int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`oper_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8");
PREPARE sql_create_table FROM @sql_create_table;
EXECUTE sql_create_table;
set @sql_table = concat(
梦见流血
'SELECT * FROM operrecord_', date_format(curdate(),'%y%m%d'));
PREPARE sql_table FROM @sql_table;
EXECUTE sql_table;
END
动态创建⽇历表⽤法
⾸先在数据库创建⼀个create_calendar⽇历表CREATE DEFINER=`root`@`%` PROCEDURE `create_calendar`(s_date DATE, e_date DATE)
BEGIN
-- ⽣成⼀个⽇历表
SET @createSql = 'truncate  TABLE calendar_custom';
prepare stmt from @createSql;
execute stmt;
WHILE s_date <= e_date DO领导祝酒词
INSERT IGNORE INTO calendar_custom VALUES (DATE(s_date)) ;
SET s_date = s_date + INTERVAL 1 DAY ;
END WHILE ;
END

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。