• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ストアド実行時のエラー「参照しているコレクションは初期化されていません」)

ストアド実行時のエラー「参照しているコレクションは初期化されていません」

このQ&Aのポイント
  • SQL Pluseからストアドを実行する際に「参照しているコレクションは初期化されていません」というエラーが発生します。
  • ストアド内で宣言されたカーソルとコレクションが正しく初期化されないため、エラーが発生します。
  • 初期化処理を適切に行うことで、SQLServerのストアドのようにテーブルのような構造で値を返すことができます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんにちは。 パッケージのプロシージャの引数で使用する場合、パッケージの宣言部においてインスタンスを作成しなければいけません・・・。 それと、作成したインスタンスをコレクションの型で初期化する必要があります。 これはIndexBy表(PL/SQL表)と違うところです。 (^^ゞ

redheads
質問者

お礼

ありがとうございます。 解決しました。 type test_type1 is table of TEST.TEST_TABLE%ROWTYPE; を type test_type1 is table of TEST.TEST_TABLE%ROWTYPE INDEX BY BINARY_INTEGER; としたところエラーは消えました。 Oracleはまだはじめたばかりなので INDEX BY BINARY_INTEGERをつけると何が変るのかは まだ知りませんがこれから調べてみようと思います。

その他の回答 (1)

回答No.1

Packageで配列の型は宣言していますが、ret自体の宣言はしていないようです。そこで、 type test_type1 is table of TEST.TEST_TABLE%ROWTYPE; の次に以下のようにretの宣言をすればOKだと思います。 ret test_type1; 初期化というより、retの宣言がないのが原因だと思います。

redheads
質問者

お礼

ありがとうございます。 そのまま入れてみましたが結果は 変わりませんでした。 入れてもいれなくてもどちらでもいいようです。