自己做的存儲過程,使用了指針,并調(diào)用了外部了時間參數(shù)!

字號:

基本的功能是這樣的:通過在程序中選擇一個時間,根據(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;