---
title: 事件调用存储过程
date: 2017-02-17 17:31:34
update: 2017-02-21 17:31:34
categories: MySQL
tags: [mysql]
---
### 1.存储过程
```mysql
# 删除存在的存储过程
DROP PROCEDURE IF EXISTS updateParcelStatu_1;
# 创建存储过程
CREATE PROCEDURE updateParcelStatu_1()
BEGIN
DECLARE sql_1 VARCHAR(1000);
DECLARE d char(6);
-- 构建表名 获取前两个月日期 格式201701
select DATE_FORMAT(DATE_SUB(CURDATE(),INTERVAL 2 MONTH),'%Y%m') into d;
-- 两个月以前包裹状态为已到站更新为已提货
SET sql_1:=CONCAT("update tp_parcel_info_",d," pi SET pi.f_parcel_status = '1' where pi.f_parcel_status = '0' and pi.f_arrive_time < DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 2 MONTH),'%Y%m%d%H%i%s');");
# 执行sql_1SQL语句;
SET @sqlStr:=sql_1;
PREPARE stmt FROM @sqlStr;
EXECUTE stmt;
END
# 调用存储过程
call updateParcelStatu_1();
# 获取执行后的sqlStr值
SELECT @sqlStr;
```
### 2.创建事件
```mysql
begin
call updateParcelStatu_1();
end
```


```mysql
# 每天凌晨执行
CREATE EVENT updateInfoStatus
ON SCHEDULE EVERY 1 DAY STARTS '2017-02-20 01:00:00'
DO
call updateParcelStatu_1();
```
### 3.查看事件是否启动
SHOW VARIABLES LIKE 'event_scheduler';
启动事件开始执行
SET GLOBAL event_scheduler = 1;
### 4.查看事件信息
SHOW EVENTS
事件调用存储过程