基本的功能是這樣的:通過在程序中選擇一個時間,根據(jù)這個時間來選擇符合條件的數(shù)據(jù),并將它插入某個表。插入的時候,要進行一個判斷,如果這個記錄已經(jīng)存在了,就不插入,不存在的話就插入該數(shù)據(jù),這個是用游標(biāo)來實現(xiàn)的。
CURSOR acc_c IS /* 定義游標(biāo),從表中選出記錄 */
select ……
from ……
where
/*原語句 a.DATE=732949 */
to_date(1721425+a.DATE,’J’)= to_date(ParaTime,’YYYY-MM-DD’) and/* 將時間參數(shù)賦給選擇語句*/
……
acc_r acc_c%ROWTYPE;/* 變量acc_r與acc_c類型相同*/
AmountToMove NUMBER;
BEGIN
OPEN acc_c;
LOOP
FETCH acc_c INTO acc_r;
EXIT WHEN acc_c%NOTFOUND; /*記錄不存在時退出*/
begin
insert into …… /*記錄存在時插入*/
values ……
EXCEPTION
when others then null;
end;
END LOOP ;
commit;
CLOSE acc_c ; /*關(guān)閉指針*/
/*修改表*/
update ……(
select …… from(
select ……
from ……
where
……
/*原語句 a.DATE=732949 */
to_date(1721425+a.DATE,’J’)= to_date(ParaTime,’YYYY-MM-DD’) and/*將時間參數(shù)賦給選擇語句*/
…… where ……
where EndDate=to_date(ParaTime,’YYYY-MM-DD’);
/*原語句 where to_number(to_char(EndDate,’J’))=732949+1721425;*/
commit;
END;
CURSOR acc_c IS /* 定義游標(biāo),從表中選出記錄 */
select ……
from ……
where
/*原語句 a.DATE=732949 */
to_date(1721425+a.DATE,’J’)= to_date(ParaTime,’YYYY-MM-DD’) and/* 將時間參數(shù)賦給選擇語句*/
……
acc_r acc_c%ROWTYPE;/* 變量acc_r與acc_c類型相同*/
AmountToMove NUMBER;
BEGIN
OPEN acc_c;
LOOP
FETCH acc_c INTO acc_r;
EXIT WHEN acc_c%NOTFOUND; /*記錄不存在時退出*/
begin
insert into …… /*記錄存在時插入*/
values ……
EXCEPTION
when others then null;
end;
END LOOP ;
commit;
CLOSE acc_c ; /*關(guān)閉指針*/
/*修改表*/
update ……(
select …… from(
select ……
from ……
where
……
/*原語句 a.DATE=732949 */
to_date(1721425+a.DATE,’J’)= to_date(ParaTime,’YYYY-MM-DD’) and/*將時間參數(shù)賦給選擇語句*/
…… where ……
where EndDate=to_date(ParaTime,’YYYY-MM-DD’);
/*原語句 where to_number(to_char(EndDate,’J’))=732949+1721425;*/
commit;
END;