[ PL/SQL ] - 手動執行 Store Procedure

情境說明:
需要以手動方式執行Procedure(SPX_TEXT)

CREATE OR REPLACE PROCEDURE SPX_TEST ( al_seq  in  number
                                                       ,rtncode       out number
                                                       ,rtnmsg          out varchar2 )

說明:SPX_TEXT中共有3個參數:輸入參數:al_seq、輸出參數:rtncode和rtnmsg

PL/SQL執行語法:
declare
n number;

v_rtncode      number;
v_rtnmsg       varchar2(2000);
begin
for n in  25843 .. 25982
   loop 
      SPX_TEST(n,v_rtncode,v_rtnmsg);
   end loop;
end;

由語法中可以發現,手動執行時需要宣告回傳值的變數,以承接執行結果!

以下是要批次更新資料的範例
。注意事項1:多筆時要定期commit;一般建議1000筆commit一次
。注意事項2:利用a 來累計update的筆數,當筆數達1000筆時就會commit

declare a number :=0;
begin
  forin 1..300000
    loop
      UPDATE TBP_003 P3
      SET P3.MD=(SELECT B.CID FROM TB_BUFFER B WHERE B.PID=P3.PID AND B.SEQ_ID =x )
      WHERE P3.PID IN (
      SELECT B.PID FROM TB_BUFFER B WHERE P3.PID=B.PID AND B.SEQ_ID =x
      );
     
      a := a+1;
      if mod(a,1000)=0 then
        commit;
      end if
      if a=357150 then//最後一筆(不足1000筆時)
        commit;
      end if
    end loop;   
end;

留言

熱門文章