[ 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
for x in 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;
留言
張貼留言
您好:
歡迎到訪我的Blog,這裡有我的生活經驗、美好的回憶和程式開發經驗分享~
目前努力學習Swift中,希望你會喜歡Swift!
如果可以也請你留言給我一個鼓勵喔!
謝謝