2012-02-23 10 views
3

を使用してNESTED TABLEを照会していますが(私はいくつかのソースから言います)、エラーメッセージが表示され続けます。ORA-21700:オブジェクトが存在しないか存在しません削除のマークが付けられています。 ..ネストした表を照会する

私はそれが私にそれをさせない理由を理解していない...私はすでにdados変数が内容を持っていることを確立しました...私はその.countを出力し、空ではありません..誰かが私にこの光を当てることができますか?

おかげで、事前...

procedure PREENCHE_CURSOR_ESTRANG_TOTAL(O_CURSOR out t_refcur) is  

    c_nips t_refcur; 

    dados T_PONTOS := T_PONTOS();--nested table instantiating.. 

    i number; 

    nip number(8); 

    gerador_de_nips varchar2(600) := 'a biG SQL QUERY nobody needs to know about =P'; 


begin 
    i := 1; 
    open c_nips for gerador_de_nips; 
    loop 
     dados.extend; 
     fetch c_nips into nip; 
     exit when c_nips%notfound; 
     dados(i) := RETORNA_PONTOS(nip); 
     i := i+1; 

    end loop; 


    close c_nips; 

    open O_CURSOR for select * from table(dados); /*WHY*/ 


end PREENCHE_CURSOR_ESTRANG_TOTAL; 
+0

あなたは 'T_PONTOS'の定義を投稿できますか?特に、SQLまたはPL/SQLで宣言されていますか?さらに、 'RENTORNA_PONTOS'はどこにも定義されていないようです。 –

答えて

6

である私は、あなたが取得している特定のエラーを理解していないが、一般的に、あなたは、SQL文で適切な型への明示的なキャストを含める必要があります。

open O_CURSOR for select * from table(CAST(dados AS t_pontos)); 

これは、文が処理のためにPL/SQLからSQLエンジンに渡され、ユーザー定義されていない変数の型に関する情報がないためです。

また、これは、スキーマレベルで(t_pontos)の型が宣言されている場合、つまりCREATE TYPEステートメントでのみ機能します。 PL/SQLコードのどこかで宣言されているとします。パッケージ仕様では、SQLエンジンは型定義にアクセスできません。

1

プロシージャの先頭にカーソルを定義し、プロシージャの本体でカーソルを開きます。

関連する問題