2016-10-18 18 views
0

参照カーソルをループに書き込むことはできますか?出来ますか?そうでなければ提案をする?ループで参照カーソルを書き込む

FOR bd_id_rec IN (SELECT BD_ID FROM DEAL D WHERE D.BD_NR=BD_NR_REC.BD_NR AND BD_VERSION_NR IN (SELECT MAX(BD_VERSION_NR) FROM DEAL D WHERE D.BD_NR=BD_NR_REC.BD_NR AND QUOTE_DIST_CD='A')) 
LOOp 
open v_refcursor for(SELECT D.BD_NR,D.BD_ID, D.BD_VERSION_NR, L.PROD_GNRC_NR_TX, L.PROD_OPT_CD, LD.AUTH_BD_NET_PRC_AM, D.W_L_STAT_CD, L.LINE_NR FROM DEAL D, LINE_ITEM L, LINE_DISC_SCALE LD, EU_CUST E 
WHERE 
D.BD_ID=bd_id_rec.bd_id 
AND D.CONTROL_CNTRY_CD=l_control_cntry_cd 
AND D.BUS_MODEL_CD=l_bus_model_cd 
AND D.MC_CHARGE=l_mc_charge 
AND D.QUOTE_DIST_CD=l_quote_dist_cd 
AND D.QUOTE_DIST_DT_GMT>SYSDATE-60 
AND LD.SCALE_ID IN (SELECT MAX(SCALE_ID) FROM LINE_DISC_SCALE WHERE bd_id=d.bd_id) 
AND LD.BD_ID=D.BD_ID 
AND LD.LINE_NR=L.LINE_NR 
AND E.DFT_ENDCUST_OTRPRTYSITE_INSTID=l_dft_otrprtysite 
AND E.DFT_ENDCUST_OTRPRTYSITE_ID=l_dft_endcust_otrprt_id 
AND L.PROD_GNRC_NR_TX=prod_rec.PROD_GNRC_NR_TX 
AND L.LINE_TYPE_CD='PN' 
AND L.BD_ID=D.BD_ID 
AND D.EU_CUST_NR=l_eu_cust_nr) 
LOOP 
end loop; 

可能かどうかサンプルコードも与えてください。 Refカーソルをループ内でどのように使うことができますか?

+1

このような質問にはお答えできません。シンプルな表を使用して、必要な作業の簡単な例を作成します。私たちはあなたの会社プロジェクトであなたのために働いていません。 –

+0

okありがとうございましたchomel – swamy

+0

とにかくこれらのすべてのREFカーソルで何をするつもりですか? –

答えて

0

もちろん、反復スルーカーソルにはネストループを使用できます。例えば。

-- iterate through first cursor 
FOR rec_cursor1 IN (SELECT column1, column2 FROM my_table1) LOOP 
    -- iterate through second cursor 
    FOR rec_cursor2 IN (SELECT * FROM my_table2 t2 WHERE t2.column1 = rec_cursor1.column2) LOOP 
     -- some actions or another nested loop 
    END LOOP;   
END LOOP;  
+0

refcursorにデータを格納する必要があります。ループ内でrefカーソルを渡すことはできますか? – swamy

関連する問題