Tampaknya Anda memiliki beberapa kebingungan tentang array nol, array kosong, dan array yang hanya berisi satu NULL
nilai.
Sebuah NULL
array adalah tidak adanya array, dengan cara yang sama seperti NULL
bilangan adalah tidak adanya bilangan. Array kosong adalah array yang ada, tetapi memiliki 0 elemen di dalamnya. Keduanya berbeda dari NUMBER_ARRAY(null)
, yang merupakan larik yang berisi satu NULL
nilai.
COUNT
metode pada larik, yang mengembalikan jumlah elemen dalam larik, memberikan ilustrasi perbedaan di antara ketiganya.
Pertama, sebuah NULL
susunan:
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
Di sini, kita mendapatkan kesalahan. Kami tidak dapat mengetahui berapa banyak elemen yang ada di l_null_array
karena kita tidak memiliki larik untuk menemukan jumlah elemen.
Kedua, array kosong:
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.
Di sini, kita dapat menemukan jumlah elemen dalam array kosong, dan angka itu adalah nol.
Akhirnya, array yang hanya berisi 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.
Array ini memiliki satu elemen di dalamnya, dan elemen tersebut adalah NULL
.
Perhatikan bahwa Anda dapat meneruskan argumen sebanyak yang Anda suka ke NUMBER_ARRAY
fungsi konstruktor, dan nilai-nilai ini akan menjadi konten awal array. Misalnya, NUMBER_ARRAY(1, 4, 18, 11, 22, 6)
membuat larik angka dengan 6 elemen di dalamnya.
Jadi, bagaimana kita bisa mengatur setiap jenis array menggunakan JDBC?
-
Untuk menyetel
NULL
larik, gunakanps.setNull(i, Types.ARRAY, "NUMBER_ARRAY");
seperti yang telah Anda lakukan di atas.
-
Untuk array kosong, gunakan:
ps.setArray(i, new ARRAY(arrayDescriptor, conn, new Integer[0]));
-
Untuk larik yang berisi satu
NULL
nilai saja, gunakanps.setArray(i, new ARRAY(arrayDescriptor, conn, new Integer[] { null }));
Saya menggunakan Integer
array dalam contoh ini, tetapi tipe numerik lainnya juga dapat digunakan.