2016-03-27 31 views
0

文字列で構成された動的SQLクエリがあります。 プロシージャは 'REF CURSOR'を戻す必要があります。PLSQL - 動的SQLでカーソルを使用できません

クエリのカーソルを開こうとすると、エラーPLS-00455が表示されます。

カーソル定義ここで

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; 

はクエリです:

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; 

あなたは私だけそうのROWTYPEでカーソルを作成し、SEC_NNテーブルから3列を使用見ることができるようにテーブル全体が私のために働かないでしょう。 これをどのように克服できますか? ありがとうございます。

+0

p_SiteList SITE_LIST_TYP; 

を交換することにより、「弱い」REFカーソルとしてカーソルを宣言することですカーソルを開きます '。 **何が間違っていますか?**あなたのコードを編集して、カーソルを開くコードとあなたが受け取るエラーメッセージを含めてください。 –

+0

[動的SQL文で強力なREFカーソルを使用できないのはなぜですか?](http://stackoverflow.com/questions/2783461/why-cant-we-use-strong-ref-cursor-with-dynamic -sql-statement) –

+0

@LukeWoodward、私はそうは思わない、私は以前のその投稿を見た、それは私のカーソルが設定されている方法です。更新されたオリジナルの投稿。 –

答えて

2

コメントから、修正は私がしようとすると、」私はエラーを取得するラインに

p_SiteList SYS_REFCURSOR; 
関連する問題