我試圖從過程的表中插入數據,從下面的代碼它 一次插入一行,即使更多的行可從 我正在挑選數據的位置。請幫我修正這段代碼,所以 所有來自源頭的行都可以一次插入。 請確認是否需要更多說明。如何在存儲過程中使用多個遊標進行合併查詢?
create or replace procedure proc_updatepkts
is
sitenotemp number(3);
precardtemp number(20);
cursor x1 is
select siteno
from sites;
cursor x2 is
select precardsummaryid
from precardsummary;
begin
open x1;
open x2;
loop
fetch x1 into sitenotemp;
fetch x2 into precardtemp;
merge into temptable a
using (sitenotemp as tosite
, precardtemp as recordid
, pktdate from dual) b
on (a.pktdate = b.pktdate)
when not matched then
insert (a.pktdate,a.tosite,a.recordid)
values(b.pktdate,b.tosite,b.recordid);
exit when x2%notfound;
exit when x1%notfound;
end loop;
close x2;
close x1;
commit;
end;
/
我想發佈相同的recordid
所有的網站與我在第一個遊標的價值。如果有20個網站,那麼20個記錄應該發佈相同的precardsummaryid
。現在擴展條件是可以有多個precardsummaryid
,所以我已經把所有的precardsummaryid
放在另一個遊標中。因此,如果有20個站點和5個precardsummaryid
,則100個記錄應通過sendpkts
表
哪裏'pktdate'從何而來?它沒有在你的代碼中聲明。 – APC
請在第二個查詢中考慮它的系統日期,其中使用雙重處理 – ashish
另外,EXIT WHEN語句應該緊跟相關的FETCH調用以防止異常或數據損壞。 – APC