Oracleタイプは次のように宣言されています。Oracle CREATE TYPEおよびPL/SQL
作成または置換タイプits_accountarray;
基本タイプはありません。この型は、プロシージャとパッケージ(およびJavaのストアドプロシージャの配列記述子)で使用されます。プロシージャ/パッケージでは、を配列に追加する関数を使用します。
<declare section>
v_account latax.ITS_ACCOUNTARRAY := new ITS_accountArray();
...
BEGIN
...
...
v_account.extend(1);
とJavaで、それは次のように使われています: たoracle.sql.ARRAY ls_accountARRAY、ls_periodARRAY。
oracle.sql.ArrayDescriptor ad = ArrayDescriptor.createDescriptor(**"ITS_ACCOUNTARRAY"**, oconn);
ls_accountARRAY = new ARRAY(ad, oconn, arg_accounts);
ocs.setARRAY(2, ls_accountARRAY);
これはどのように機能するのですか?名前には配列が含まれていますが、通常はわかるように、配列やテーブルの型として定義されていません。それは動作しますが、これは法的な用法ですか、あるいは、型を明示的に配列型に宣言すべきですか?
おかげ
サム
**更新:**私は、この問題を抱えている人のためにこれを修正したいだけです。これは私が使用していたSqltoolsバージョンの表示上の問題であることが判明しました。タイプを編集したとき、ソースを部分的に表示していました。 'CREATE OR REPLACE TYPE its_accountarray' それが私のものです。本文部分 "** AS TABLE OF ... **"は表示されませんでした。明らかにそれは間に多くのスペースを置いて、そのボディは見えていなかった。以下に述べるように、SQL * Plusは正しく表示されました。ツールの新しいバージョンはまだ多くのスペースが埋め込まれているが、少なくともビュー内には優れています。 – SamV