MySQL的一個儲存過程
阿新 • • 發佈:2019-02-01
/* 刪除掉已存在同名儲存過程*/
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;