null配列、空の配列、および単一のNULL
のみを含む配列について混乱しているようです。 値。
NULL
配列は、NULL
と同じように、配列が存在しないことです。 数は数がないことです。空の配列は存在する配列ですが、その中に0個の要素があります。どちらもNUMBER_ARRAY(null)
とは異なります 、これは単一のNULL
を含む配列です 値。
COUNT
配列内の要素の数を返す配列のメソッドは、これら3つの違いを示しています。
まず、NULL
配列:
SQL> declare
2 l_null_array number_array := null;
3 begin
4 dbms_output.put_line('Count: ' || l_null_array.COUNT);
5 end;
6 /
declare
*
ERROR at line 1:
ORA-06531: Reference to uninitialized collection
ORA-06512: at line 4
ここで、エラーが発生します。 l_null_array
に要素がいくつあるかわかりません の要素の数を見つけるための配列がないためです。
次に、空の配列:
SQL> declare
2 l_empty_array number_array := number_array();
3 begin
4 dbms_output.put_line('Count: ' || l_empty_array.COUNT);
5 end;
6 /
Count: 0
PL/SQL procedure successfully completed.
ここで、空の配列内の要素の数を見つけることができ、その数はゼロです。
最後に、NULL
のみを含む配列 :
SQL> declare
2 l_array_containing_null number_array := number_array(null);
3 begin
4 dbms_output.put_line('Count: ' || l_array_containing_null.COUNT);
5 end;
6 /
Count: 1
PL/SQL procedure successfully completed.
この配列には1つの要素があり、その1つの要素はNULL
です。 。
NUMBER_ARRAY
にはいくつでも引数を渡すことができることに注意してください コンストラクター関数であり、これらの値は配列の初期コンテンツになります。例:NUMBER_ARRAY(1, 4, 18, 11, 22, 6)
6つの要素を含む数値配列を作成します。
では、JDBCを使用して各種類の配列を設定するにはどうすればよいでしょうか。
-
NULL
を設定するには 配列、使用ps.setNull(i, Types.ARRAY, "NUMBER_ARRAY");
上で行ったように。
-
空の配列の場合は、次を使用します:
ps.setArray(i, new ARRAY(arrayDescriptor, conn, new Integer[0]));
-
単一の
NULL
を含む配列の場合 値のみ、使用ps.setArray(i, new ARRAY(arrayDescriptor, conn, new Integer[] { null }));
Integer
を使用しています これらの例では配列ですが、他の数値タイプも機能するはずです。