/* 删除掉已存在同名存储过程*/
drop procedure if exists proc_trans_cmheader_data;
/* 默认情况下,delimiter是分号“;”。
在命令行客户端中,如果有一行命令以分号结束,
那么回车后,mysql将会执行该命令。
但有时候,不希望MySQL这么做。因为可能输入较多的语句,且语句中包含有分号。
默认情况下,不可能等到用户把这些语句全部输入完之后,再执行整段语句。
因为mysql一遇到分号,它就要自动执行。
这种情况下,就可以使用delimiter,把delimiter后面换成其它符号,如//或$$。
此时,delimiter作用就是对整个小段语句做一个简单的封装。
此命令多用在定义子程序,触发程序等mysql自己内嵌小程序中。*/
delimiter |
CREATE PROCEDURE proc_trans_cmheader_data (
in_start_date VARCHAR(64),
in_end_date VARCHAR(64)
)
BEGIN
declare start_date VARCHAR(64);
declare end_date VARCHAR(64);
SET start_date = in_start_date;
SET end_date = in_end_date;
start transaction;
/* 放入备份表中*/
INSERT INTO cm_header_20140929 SELECT * FROM cm_header c WHERE c.created_time > start_date AND c.created_time < end_date;
/* 删除已经存在的待发表中的数据*/
DELETE FROM ebdc_db.cm_header WHERE ebdc_db.cm_header.id IN (SELECT id FROM ebdc_db.cm_header_20140929);
commit;
end;
drop procedure if exists proc_trans_cmheader_data;
/* 默认情况下,delimiter是分号“;”。
在命令行客户端中,如果有一行命令以分号结束,
那么回车后,mysql将会执行该命令。
但有时候,不希望MySQL这么做。因为可能输入较多的语句,且语句中包含有分号。
默认情况下,不可能等到用户把这些语句全部输入完之后,再执行整段语句。
因为mysql一遇到分号,它就要自动执行。
这种情况下,就可以使用delimiter,把delimiter后面换成其它符号,如//或$$。
此时,delimiter作用就是对整个小段语句做一个简单的封装。
此命令多用在定义子程序,触发程序等mysql自己内嵌小程序中。*/
delimiter |
CREATE PROCEDURE proc_trans_cmheader_data (
in_start_date VARCHAR(64),
in_end_date VARCHAR(64)
)
BEGIN
declare start_date VARCHAR(64);
declare end_date VARCHAR(64);
SET start_date = in_start_date;
SET end_date = in_end_date;
start transaction;
/* 放入备份表中*/
INSERT INTO cm_header_20140929 SELECT * FROM cm_header c WHERE c.created_time > start_date AND c.created_time < end_date;
/* 删除已经存在的待发表中的数据*/
DELETE FROM ebdc_db.cm_header WHERE ebdc_db.cm_header.id IN (SELECT id FROM ebdc_db.cm_header_20140929);
commit;
end;