首页 > 数据库技术 > 详细

mysql之常见存储过程书写

时间:2019-05-15 19:45:34      阅读:131      评论:0      收藏:0      [点我收藏+]

实现按年月建表(每个月3张表),输入的两个参数分表是开始年份与结果年份(包含本输入的那个年份)

 

CREATE DEFINER=`root`@`localhost` PROCEDURE `2019,2030`(IN `yearStart` int,IN `yearEnd` int)
BEGIN
    #Routine body goes here...
DECLARE tableName VARCHAR(32);
DECLARE mon varchar(2);
DECLARE i int;
DECLARE j int;
set j=0;
set i=1;


while yearStart<=yearEnd DO

        while i<13 DO
                if i<10 THEN
                    set mon=CONCAT(0,i);    
                ELSE
                    set mon=CONCAT(i,‘‘);
                end if;
            
                set tableName=CONCAT(`yearStart`,mon);
                while j<3 DO
                            set @d=concat(DROP TABLE IF EXISTS t_api_log_,tableName,_,j,;);
                            prepare del from @d; 
                            execute del; 
                            SET @s=CONCAT(CREATE TABLE t_api_log_,tableName,_,j, (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `type` int(11) DEFAULT NULL COMMENT \枚举(0:top订购请求,1:top退订请求,2:请求boss订购,3:请求boss退订;4:boss请求订购,5:boss请求退订)\,
  `create_time` datetime DEFAULT NULL,
  `user_id` varchar(50) DEFAULT NULL,
  `req_info` varchar(255) DEFAULT NULL,
  `resp_info` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;);

                  prepare stmt from @s; 
          execute stmt; 
                
                    set j=j+1;
                end while;
                set j=0;
                set i=i+1;
        end while;
        set i=1;
        set yearStart=yearStart+1;
end while;

END

 

mysql之常见存储过程书写

原文:https://www.cnblogs.com/chaojibaidu/p/10871328.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!