2016-03-27 25 views
0

Bir dizede oluşturulmuş dinamik bir SQL sorgum var. Prosedür bir 'REF CURSOR' döndürmelidir.PLSQL - İmleç, dinamik sql olarak kullanılamaz

Sorgu için imleci açmaya çalıştığımda PLS-00455 hatasını alıyorum.

İşte

CURSOR cu_SiteList IS 
    SELECT SEC_NN.SRV_ID 
     ,SEC_NN.SRV_NAME 
     ,SEC_NN.SRV_COMTYP_CODE 
    FROM SEC_NN 
     ,COM_SITE_STATE_T 
    WHERE SEC_NN.SRV_COMTYP_CODE <> 1 
    AND SEC_NN.SRV_ID = 2; 

    TYPE SITE_LIST_TYP IS REF CURSOR RETURN cu_SiteList%ROWTYPE; 

İmleç tanımı sorgusu:

p_SiteList SITE_LIST_TYP; 
     lv_QueryStr := ' SELECT SEC_NN.SRV_ID ' || 
         ' ,SEC_NN.SRV_NAME ' || 
         ' ,SEC_NN.SRV_COMTYP_CODE ' || 
        ' FROM SEC_NN_, ' || 
           ' COM_SITE_STATE_T ' || 
          ' WHERE SEC_NN.SRV_COMTYP_CODE <> 1 ' || 
           ' AND SEC_NN.SRV_MODE_CODE = 2' || 
           ' AND SEC_NN.SRV_ID = COM_SITE_STATE_T.SRV_ID'; 

OPEN p_SiteList FOR lv_QueryStr; 

Eğer sadece bu yüzden bir Rowtype olan bir imleç oluşturma SEC_NN tablodan 3 sütunlarını kullanabilirsiniz görebileceğiniz gibi tüm masa benim için çalışmayacak. Bunu nasıl aşabilirsiniz? Şimdiden teşekkürler. Ben çalıştığımda sözlerinden

+0

çizgiyi

p_SiteList SITE_LIST_TYP; 

değiştirerek, bir 'zayıf' ref imleç olarak göstericiyi bildirmek için 'hatası alıyorum imleci aç. ** Hangi hata? ** Lütfen imleci açan kodu ve aldığınız hata mesajını içerecek şekilde kodunuzu düzenleyin. –

+0

Olası yinelenen [Neden dinamik SQL deyimiyle güçlü bir ref imleç kullanamıyoruz?] (Http://stackoverflow.com/questions/2783461/why-cant-we-use-strong-ref-cursor-with-dynamic -sql-statement) –

+0

@LukeWoodward, sanmıyorum, bu yazıyı daha önce gördüm, bu da imlecimin yapılandırılma şeklidir. Orijinal gönderi güncellendi. –

cevap

2

, düzeltme

p_SiteList SYS_REFCURSOR;