MySQL定时任务的创建(存储过程)
来源:互联网 发布:软件产品说明书怎么写 编辑:程序博客网 时间:2024/05/17 22:33
首先定时任务一定是执行的存储过程
类似于:
CREATE DEFINER=`root`@`10.1.10.41` PROCEDURE `account_balance_snapshot_insert`()
BEGIN
DECLARE today VARCHAR (20);
DECLARE yesLogDate VARCHAR(20);
DECLARE accountId VARCHAR (40);
DECLARE productType VARCHAR (20);
DECLARE monthFare DOUBLE;
DECLARE monthRealFare DOUBLE;
DECLARE leftFare400 DOUBLE;
DECLARE smsFare DOUBLE;
DECLARE telFare DOUBLE;
DECLARE faxFare DOUBLE;
DECLARE accountMonthFare DOUBLE;
DECLARE cursor_flag INT;
DECLARE mycur CURSOR FOR SELECT ACCOUNT_ID,MONTH_FARE,MONTH_REAL_FARE,LEFT_FARE_400,ACCOUNT_MONTH_FARE,SMS_FARE,TEL_FARE,FAX_FARE FROM c5_billing.`account_service_fare_snapshot_view` t;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET cursor_flag = 1 ;
SET cursor_flag = 0 ;
/*删除快照临时表的数据*/
DELETE FROM `c5_billing`.`tbl_fare_snapshot_log`;
SET productType = 'callCenter';
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d') INTO today;
SELECT DATE_FORMAT(NOW() - INTERVAL 1 DAY, '%Y-%m-%d') INTO yesLogDate;
/** 座席license、外呼、短信、传真、月租和400余额 **/
OPEN mycur;
loopflag : LOOP
FETCH mycur INTO accountId,monthFare,monthRealFare,leftFare400,accountMonthFare,smsFare,telFare,faxFare;
IF cursor_flag =1 THEN LEAVE loopflag;
END IF;
INSERT INTO c5_billing.tbl_fare_snapshot_log (PRODUCT_TYPE,LOG_TIME,ACCOUNT_ID,MONTH_FARE,MONTH_REAL_FARE,SMS_FARE,TEL_FARE,FAX_FARE,LEFT_FARE_400,ACCOUNT_MONTH_FARE)
VALUES(productType,yesLogDate,accountId,monthFare,monthRealFare,smsFare,telFare,faxFare,LeftFare400,accountMonthFare);
COMMIT;
END LOOP loopflag ;
CLOSE mycur;
/** 座席license当日消费金额 **/
INSERT INTO `c5_billing`.tbl_fare_snapshot_log (PRODUCT_TYPE,LOG_TIME,ACCOUNT_ID,MONTH_FEE,MONTH_REAL_FEE)
SELECT productType,t.log_time,t.account_id,t.fare,t.real_fare FROM `c5_billing`.`c5_account_license_fare_log` t WHERE t.log_time=yesLogDate;
COMMIT;
/** 座席license当日补扣金额 **/
INSERT INTO `c5_billing`.tbl_fare_snapshot_log (PRODUCT_TYPE,LOG_TIME,ACCOUNT_ID,MONTH_FEE,MONTH_REAL_FEE)
SELECT 'callCenter',yesLogDate,t.account_id,t.LOG_FEE,t.license_real_fee FROM `c5_billing`.`tbl_log` t
WHERE t.LOG_TIME>=yesLogDate AND t.LOG_TYPE='license';
/** 座席月租当日消费金额 **/
INSERT INTO `c5_billing`.tbl_fare_snapshot_log (PRODUCT_TYPE,LOG_TIME,ACCOUNT_ID,ACCOUNT_MONTH_FEE)
SELECT 'callCenter',yesLogDate,t.account_id,t.LOG_FEE FROM `c5_billing`.`tbl_log` t
WHERE t.LOG_TIME>=yesLogDate AND t.LOG_TYPE='monthlyFees';
/** 短信当日消费金额 **/
DELETE FROM `c5_bill_stat`.`tbl_sms_send`;
INSERT INTO `c5_bill_stat`.`tbl_sms_send`
(SELECT * FROM `c5_billing`.`c5_sms_send` t
WHERE t.ISDO='1' AND t.`SEND_TIME` >= yesLogDate AND t.`SEND_TIME` < today);
COMMIT ;
INSERT INTO `c5_billing`.tbl_fare_snapshot_log (PRODUCT_TYPE,LOG_TIME,ACCOUNT_ID,SMS_FEE)
SELECT 'callCenter',yesLogDate,t.`ACCOUNT_ID`,IFNULL(SUM(t.SMS_FARE),0)
FROM `c5_bill_stat`.`tbl_sms_send` t GROUP BY t.`ACCOUNT_ID`;
/** 传真当日消费金额 **/
DELETE FROM `c5_bill_stat`.`tbl_fax_send`;
INSERT INTO `c5_bill_stat`.`tbl_fax_send`
(SELECT * FROM `c5_billing`.`c5_fax_send` t
WHERE t.ISDO='1' AND t.`SEND_TIME` >= yesLogDate AND t.`SEND_TIME` < today);
COMMIT ;
INSERT INTO `c5_billing`.tbl_fare_snapshot_log (PRODUCT_TYPE,LOG_TIME,ACCOUNT_ID,FAX_FEE)
SELECT 'callCenter',yesLogDate,t.`ACCOUNT_ID`,IFNULL(COUNT(t.`FAX_ID`)*fax.`all_price`,0)
FROM `c5_bill_stat`.`tbl_fax_send` t LEFT JOIN `c5_billing`.`c5_account_service_fare` fax
ON t.`ACCOUNT_ID`=fax.`ACCOUNT_ID` AND fax.`FARE_TYPE`='FAX' GROUP BY t.`ACCOUNT_ID`;
/** 外呼当日消费金额 **/
DELETE FROM `c5_call_record`.`c5_call_sheet_t`;
INSERT INTO `c5_call_record`.`c5_call_sheet_t`
(SELECT * FROM `c5_call_record`.`c5_call_sheet` t
WHERE t.isdo = '1' AND t.`BEGIN_TIME` >= yesLogDate AND t.`BEGIN_TIME` < today);
COMMIT ;
INSERT INTO `c5_billing`.tbl_fare_snapshot_log (PRODUCT_TYPE,LOG_TIME,ACCOUNT_ID,TEL_FEE)
SELECT 'callCenter',yesLogDate,t.`ACCOUNT_ID`,IFNULL(SUM(t.`CALL_FARE`),0)
FROM `c5_call_record`.`c5_call_sheet_t` t GROUP BY t.`ACCOUNT_ID`;
COMMIT;
/** 400当日消费金额 **/
DELETE FROM `c5_call_record`.`c5_call_sheet_t`;
INSERT INTO `c5_call_record`.`c5_call_sheet_t` (
CALL_ID,ACCOUNT_ID,BEGIN_TIME,ISDO,call_fare
)
SELECT call_sheet_id,account_id,begin_time,ISDO,CALL_FARE
FROM `c5_call_record`.`c5_call_sheet_400` t WHERE ISDO='1' AND t.`begin_time` >= yesLogDate AND t.`begin_time` < today;
COMMIT ;
INSERT INTO `c5_billing`.tbl_fare_snapshot_log (PRODUCT_TYPE,LOG_TIME,ACCOUNT_ID,FEE_400)
SELECT 'callCenter',yesLogDate,t.`ACCOUNT_ID`,IFNULL(SUM(t.`CALL_FARE`),0)
FROM `c5_call_record`.`c5_call_sheet_t` t GROUP BY t.`ACCOUNT_ID`;
COMMIT;
/** 400当日消费金额(按照服务号) **/
DELETE FROM `c5_call_record`.`c5_call_sheet_400_service_num`;
INSERT INTO `c5_call_record`.`c5_call_sheet_400_service_num` (
CALLED_NO,ACCOUNT_ID,BEGIN_TIME,ISDO,call_fare
)
SELECT called_no,account_id,begin_time,ISDO,CALL_FARE
FROM `c5_call_record`.`c5_call_sheet_400` t WHERE ISDO='1' AND t.`begin_time` >= yesLogDate AND t.`begin_time` < today;
COMMIT ;
INSERT INTO `c5_billing`.tbl_fare_snapshot_num_400_log (SERVICE_NUM,PRODUCT_TYPE,LOG_TIME,ACCOUNT_ID,FEE_400)
SELECT t.`CALLED_NO` AS SERVICE_NUM, '400Fee',yesLogDate,t.`ACCOUNT_ID`,IFNULL(SUM(t.`CALL_FARE`),0)
FROM `c5_call_record`.`c5_call_sheet_400_service_num` t GROUP BY t.`CALLED_NO`;
COMMIT;
/** 座席LICENSE当日缴费与赠送金额 **/
INSERT INTO `c5_billing`.tbl_fare_snapshot_log (PRODUCT_TYPE,LOG_TIME,ACCOUNT_ID,MONTH_PAYMENT,MONTH_PAYMENT_GIFT)
SELECT 'callCenter',yesLogDate,t.`ACCOUNT_ID`,IFNULL(SUM(t.`payment_fare`),0),IFNULL(SUM(t.`return_fare`),0)
FROM `c5_billing`.`c5_account_fare_log` t WHERE t.`change_time`>=yesLogDate AND t.`change_time`<today
AND t.`fare_type`='month' GROUP BY t.`ACCOUNT_ID`;
/** 短信当日缴费金额 **/
INSERT INTO `c5_billing`.tbl_fare_snapshot_log (PRODUCT_TYPE,LOG_TIME,ACCOUNT_ID,SMS_PAYMENT)
SELECT 'callCenter',yesLogDate,t.`ACCOUNT_ID`,IFNULL(SUM(t.`payment_fare`),0)
FROM `c5_billing`.`c5_account_fare_log` t WHERE t.`change_time`>=yesLogDate AND t.`change_time`<today
AND t.`fare_type`='SMS' GROUP BY t.`ACCOUNT_ID`;
/** 传真当日缴费金额 **/
INSERT INTO `c5_billing`.tbl_fare_snapshot_log (PRODUCT_TYPE,LOG_TIME,ACCOUNT_ID,FAX_PAYMENT)
SELECT 'callCenter',yesLogDate,t.`ACCOUNT_ID`,IFNULL(SUM(t.`payment_fare`),0)
FROM `c5_billing`.`c5_account_fare_log` t WHERE t.`change_time`>=yesLogDate AND t.`change_time`<today
AND t.`fare_type`='FAX' GROUP BY t.`ACCOUNT_ID`;
/** 通话当日缴费金额 **/
INSERT INTO `c5_billing`.tbl_fare_snapshot_log (PRODUCT_TYPE,LOG_TIME,ACCOUNT_ID,TEL_PAYMENT)
SELECT 'callCenter',yesLogDate,t.`ACCOUNT_ID`,IFNULL(SUM(t.`payment_fare`),0)
FROM `c5_billing`.`c5_account_fare_log` t WHERE t.`change_time`>=yesLogDate AND t.`change_time`<today
AND t.`fare_type`='TEL' GROUP BY t.`ACCOUNT_ID`;
/** 月租当日缴费金额 **/
INSERT INTO `c5_billing`.tbl_fare_snapshot_log (PRODUCT_TYPE,LOG_TIME,ACCOUNT_ID,ACCOUNT_MONTH_PAYMENT)
SELECT 'callCenter',yesLogDate,t.`ACCOUNT_ID`,IFNULL(SUM(t.`payment_fare`),0)
FROM `c5_billing`.`c5_account_fare_log` t WHERE t.`change_time`>=yesLogDate AND t.`change_time`<today
AND t.`fare_type`='monthRent' GROUP BY t.`ACCOUNT_ID`;
/** 400当日缴费金额 **/
INSERT INTO `c5_billing`.tbl_fare_snapshot_log (PRODUCT_TYPE,LOG_TIME,ACCOUNT_ID,PAYMENT_400)
SELECT 'callCenter',yesLogDate,t.`ACCOUNT_ID`,IFNULL(SUM(t.`payment_fare`),0)
FROM `c5_billing`.`c5_account_fare_log` t WHERE t.`change_time`>=yesLogDate AND t.`change_time`<today
AND t.`fare_type`='400' GROUP BY t.`ACCOUNT_ID`;
INSERT INTO `c5_bill_stat`.`tbl_fare_snapshot_log_count` (PRODUCT_TYPE,LOG_TIME,ACCOUNT_ID,MONTH_FARE,MONTH_REAL_FARE,
SMS_FARE,TEL_FARE,FAX_FARE,LEFT_FARE_400,ACCOUNT_MONTH_FARE,MONTH_FEE,MONTH_REAL_FEE,SMS_FEE,TEL_FEE,FAX_FEE,FEE_400,
ACCOUNT_MONTH_FEE,MONTH_PAYMENT,MONTH_PAYMENT_GIFT,SMS_PAYMENT,TEL_PAYMENT,FAX_PAYMENT,PAYMENT_400,
ACCOUNT_MONTH_PAYMENT)
SELECT t.`PRODUCT_TYPE`,t.`LOG_TIME`,t.`ACCOUNT_ID`,SUM(t.`MONTH_FARE`),SUM(t.`MONTH_REAL_FARE`),SUM(t.`SMS_FARE`),SUM(t.`TEL_FARE`),
SUM(t.`FAX_FARE`),SUM(t.`LEFT_FARE_400`),SUM(t.`ACCOUNT_MONTH_FARE`),SUM(t.`MONTH_FEE`),SUM(t.`MONTH_REAL_FEE`),SUM(t.`SMS_FEE`),
SUM(t.`TEL_FEE`),SUM(t.`FAX_FEE`),SUM(t.`FEE_400`),SUM(t.`ACCOUNT_MONTH_FEE`),SUM(t.`MONTH_PAYMENT`),
SUM(t.`MONTH_PAYMENT_GIFT`),SUM(t.`SMS_PAYMENT`),SUM(t.`TEL_PAYMENT`),SUM(t.`FAX_PAYMENT`),SUM(t.`PAYMENT_400`),SUM(t.`ACCOUNT_MONTH_PAYMENT`)
FROM `c5_billing`.`tbl_fare_snapshot_log` t GROUP BY t.LOG_TIME,t.ACCOUNT_ID;
INSERT INTO `c5_bill_stat`.`tbl_fare_snapshot_num_400_log_count` (SERVICE_NUM,PRODUCT_TYPE,LOG_TIME,ACCOUNT_ID,FEE_400)
SELECT t.SERVICE_NUM,t.`PRODUCT_TYPE`,t.`LOG_TIME`,t.`ACCOUNT_ID`,SUM(t.`FEE_400`)
FROM `c5_billing`.`tbl_fare_snapshot_num_400_log` t GROUP BY t.LOG_TIME,t.SERVICE_NUM;
END;
又或者是如下之类的存储过程
CREATE DEFINER=`root`@`10.1.10.41` PROCEDURE `agent_change_count`()
BEGIN
DECLARE DATE VARCHAR (20) DEFAULT DATE_FORMAT(NOW() - INTERVAL 1 DAY, '%Y-%m-%d');
DECLARE change_add VARCHAR (20) ;
DECLARE change_delete VARCHAR (20) ;
DECLARE product_ivr VARCHAR (10) ;
DECLARE product_standard VARCHAR (10) ;
DECLARE product_enterprise VARCHAR (10) ;
DECLARE product_business VARCHAR (10) ;
DECLARE product_monitor VARCHAR (10) ;
DECLARE product_order VARCHAR (10) ;
DECLARE product_ext VARCHAR (10) ;
DECLARE product_outCall VARCHAR (10) ;
DECLARE accoountId VARCHAR (40) ;
DECLARE cursor_flag INT ;
DECLARE account_cursor CURSOR FOR
SELECT
DISTINCT account_id
FROM
c5_billing.`c5_agent_change_log`
WHERE change_time LIKE CONCAT(DATE, '%') ;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET cursor_flag = 1 ;
SET change_add = 'add' ;
SET change_delete = 'delete' ;
SET product_ivr = '5' ;
SET product_standard = '3' ;
SET product_enterprise = '2' ;
SET product_business = '6' ;
SET product_monitor = '1' ;
SET product_order = '7' ;
SET product_ext = '8';
SET product_outCall = '4' ;
SET cursor_flag = 0 ;
OPEN account_cursor;
loopflag : LOOP
FETCH account_cursor INTO accoountId ;
IF cursor_flag =1 THEN LEAVE loopflag;
END IF;
SELECT accoountId;
SELECT cursor_flag;
INSERT INTO c5_bill_stat.`tbl_agent_change_count`
(SELECT
*
FROM
(
(SELECT
NULL) id,
(SELECT
accoountId) account_id,
(SELECT
DATE) DATE,
(SELECT
IFNULL(SUM(t.change_num), 0)
FROM
c5_billing.c5_agent_change_log t
WHERE t.change_time LIKE CONCAT(DATE, '%')
AND t.change_type = change_add
AND t.account_id = accoountId) add_number_total,
(SELECT
IFNULL(SUM(t.change_num), 0)
FROM
c5_billing.c5_agent_change_log t
WHERE t.change_time LIKE CONCAT(DATE, '%')
AND t.change_type = change_delete
AND t.account_id = accoountId) delete_number_total,
(SELECT
IFNULL(SUM(t.change_num), 0)
FROM
c5_billing.c5_agent_change_log t
WHERE t.change_time LIKE CONCAT(DATE, '%')
AND t.change_type = change_add
AND t.change_product = product_ivr
AND t.account_id = accoountId) add_ivr,
(SELECT
IFNULL(SUM(t.change_num), 0)
FROM
c5_billing.c5_agent_change_log t
WHERE t.change_time LIKE CONCAT(DATE, '%')
AND t.change_type = change_delete
AND t.change_product = product_ivr
AND t.account_id = accoountId) delete_ivr,
(SELECT
IFNULL(SUM(t.change_num), 0)
FROM
c5_billing.c5_agent_change_log t
WHERE t.change_time LIKE CONCAT(DATE, '%')
AND t.change_type = change_add
AND t.change_product = product_standard
AND t.account_id = accoountId) add_standard,
(SELECT
IFNULL(SUM(t.change_num), 0)
FROM
c5_billing.c5_agent_change_log t
WHERE t.change_time LIKE CONCAT(DATE, '%')
AND t.change_type = change_delete
AND t.change_product = product_standard
AND t.account_id = accoountId) delete_standard,
(SELECT
IFNULL(SUM(t.change_num), 0)
FROM
c5_billing.c5_agent_change_log t
WHERE t.change_time LIKE CONCAT(DATE, '%')
AND t.change_type = change_add
AND t.change_product = product_enterprise
AND t.account_id = accoountId) add_enterprise,
(SELECT
IFNULL(SUM(t.change_num), 0)
FROM
c5_billing.c5_agent_change_log t
WHERE t.change_time LIKE CONCAT(DATE, '%')
AND t.change_type = change_delete
AND t.change_product = product_enterprise
AND t.account_id = accoountId) delete_enterprise,
(SELECT
IFNULL(SUM(t.change_num), 0)
FROM
c5_billing.c5_agent_change_log t
WHERE t.change_time LIKE CONCAT(DATE, '%')
AND t.change_type = change_add
AND t.change_product = product_monitor
AND t.account_id = accoountId) add_monitor,
(SELECT
IFNULL(SUM(t.change_num), 0)
FROM
c5_billing.c5_agent_change_log t
WHERE t.change_time LIKE CONCAT(DATE, '%')
AND t.change_type = change_delete
AND t.change_product = product_monitor
AND t.account_id = accoountId) delete_monitor,
(SELECT
IFNULL(SUM(t.change_num), 0)
FROM
c5_billing.c5_agent_change_log t
WHERE t.change_time LIKE CONCAT(DATE, '%')
AND t.change_type = change_add
AND t.change_product = product_business
AND t.account_id = accoountId) add_business,
(SELECT
IFNULL(SUM(t.change_num), 0)
FROM
c5_billing.c5_agent_change_log t
WHERE t.change_time LIKE CONCAT(DATE, '%')
AND t.change_type = change_delete
AND t.change_product = product_business
AND t.account_id = accoountId) delete_business,
(SELECT
IFNULL(SUM(t.change_num), 0)
FROM
c5_billing.c5_agent_change_log t
WHERE t.change_time LIKE CONCAT(DATE, '%')
AND t.change_type = change_add
AND t.change_product = product_outCall
AND t.account_id = accoountId) add_outcall,
(SELECT
IFNULL(SUM(t.change_num), 0)
FROM
c5_billing.c5_agent_change_log t
WHERE t.change_time LIKE CONCAT(DATE, '%')
AND t.change_type = change_delete
AND t.change_product = product_outCall
AND t.account_id = accoountId) delete_outcall,
(SELECT
IFNULL(SUM(t.change_num), 0)
FROM
c5_billing.c5_agent_change_log t
WHERE t.change_time LIKE CONCAT(DATE, '%')
AND t.change_type = change_add
AND t.change_product = product_order
AND t.account_id = accoountId) add_order,
(SELECT
IFNULL(SUM(t.change_num), 0)
FROM
c5_billing.c5_agent_change_log t
WHERE t.change_time LIKE CONCAT(DATE, '%')
AND t.change_type = change_delete
AND t.change_product = product_order
AND t.account_id = accoountId) delete_order,
(SELECT
COUNT(DISTINCT t.account_id)
FROM
c5_billing.c5_agent_change_log t
WHERE t.change_time LIKE CONCAT(DATE, '%')
AND t.account_id = accoountId) change_account,
(SELECT
IFNULL(SUM(t.change_num), 0)
FROM
c5_billing.c5_agent_change_log t
WHERE t.change_time LIKE CONCAT(DATE, '%')
AND t.change_type = change_add
AND t.change_product = product_ext
AND t.account_id = accoountId) add_ext,
(SELECT
IFNULL(SUM(t.change_num), 0)
FROM
c5_billing.c5_agent_change_log t
WHERE t.change_time LIKE CONCAT(DATE, '%')
AND t.change_type = change_delete
AND t.change_product = product_ext
AND t.account_id = accoountId) delete_ext
)) ;
END LOOP loopflag ;
CLOSE account_cursor ;
COMMIT ;
END;
- MySQL定时任务的创建(存储过程)
- mysql创建定时执行存储过程任务
- mysql创建存储过程和事件(定时任务)
- mysql怎么创建可以定时执行任务的过程语句存储过程定时执行sql
- mysql创建一个存储过程并创建定时任务
- mysql 存储过程+定时任务
- mysql存储过程 定时任务
- mysql存储过程 定时任务
- Mysql定时任务&存储过程
- MySql 定时任务和存储过程,每月创建一张表
- MySQL数据库的分区表、存储过程、event定时任务的创建
- oracle创建存储过程定时任务时报错的问题
- 数据库创建存储过程,做为定时任务
- Oracle创建定时任务与存储过程
- oracle创建存储过程和定时任务
- linux定时任务 掉mysql 存储过程
- mysql定时任务与存储过程实例
- MYSQL 定时任务调用存储过程
- 使用Druid生成加密密码,实现mysql数据库连接用户密码加密解密
- 微信小程序--后台交互/wx.request({})方法/渲染页面方法 解析
- 纯JS导出文件为excel格式-----1
- 关于espcms的sql注入漏洞代码审计复现
- 关于static语句,构造代码块,构造方法的执行顺序
- MySQL定时任务的创建(存储过程)
- 介绍几种常见的对焦基本原理
- ViewPager中的子Activity的onActivityResult无响应
- 辩论8反驳的八个层次
- Androdi控件小知识点(不断更新)
- apache2.4 中文乱码问题
- mysql 存储in out 区别
- 临时总结:错误总结(小2例)
- 满二叉树中任意两个结点的公共祖先