> 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.

