> CREATE OR REPLACE TYPE [NAMA_ARRAY] AS VARRAY(100) OF VARCHAR2(55);
> 
> CREATE OR REPLACE PROCEDURE "[NAMA_PROCEDURE]" (
>         P_PARAMETER_1 IN [NAMA_ARRAY]
> ) AS
> 
> BEGIN
>     FOR i IN 1 .. P_PARAMETER_1.COUNT
>     LOOP
> INSERT INTO [TABEL_TUJUAN] 
> (
> SELECT 
> A,
> B
> FROM [TABEL_SOURCE]
> WHERE ID = P_PARAMETER_1(i))
>     END LOOP;
> END;

Gimana kalo parameter yang dikirim itu berupa VARCHAR?
Jadi PL-nya kayak gini

CREATE OR REPLACE PROCEDURE "[NAMA_PROCEDURE]" (
P_PARAMETER_1 IN VARCHAR2
) AS
BEGIN
  EXECUTE IMMEDIATE 'INSERT INTO [TABEL_TUJUAN] SELECT A, B FROM [TABEL_SOURCE] 
WHERE ID IN ' || P_PARAMETER_1;
  COMMIT;
END

Jadinya si Java cuma berkewajiban mengirim String berupa '(ID1, ID2, ID3, 
dst...)'

Maaf, tapi kasus aslinya kan anda yang tahu. Tapi semisal kasus aslinya tidak 
jauh-jauh banget dari kasus yang anda sampaikan disini. Mungkin cara ini bisa 
dipakai.

Catatan : query IN (a, b, c, d...) terbatas. Katanya hanya bisa menampung 
sekitar 500-an elemen saja.

Kirim email ke