Przekazuję tablicę ciągów (plcListchar) do procedury składowanej, chciałbym użyć tej tablicy łańcuchów w klauzuli IN().Tablica w klauzuli IN() Oracle PLSQL
Nie mogę użyć plcListchar bezpośrednio w klauzuli IN(). Pozwól mi pokazać, w jaki sposób jestem crating tablica ciągów plcListchar w JAVA.
String array[] = {"o", "l"};
ArrayDescriptor des = ArrayDescriptor.createDescriptor("CHAR_ARRAY", con);
ARRAY array_to_pass = new ARRAY(des,con,array);
callStmtProductSearch.setArray(4, array_to_pass);
na skrzynie CHAR_ARRAY,
create or replace type CHAR_ARRAY as table of varchar2;
chcę używać plcListchar w klauzuli. Oto moja procedura przechowywana.
CREATE OR REPLACE PROCEDURE product_search(
status IN varchar2,
plcList IN varchar2,
i_culture_id IN number,
plcListchar IN CHAR_ARRAY,
status_name OUT varchar2,
culture_code OUT varchar2)
AS
CURSOR search_cursor IS
SELECT p.status_name, p.culture_code
FROM [email protected] p
WHERE p.publishable_flag=1
AND p.isroll =0
AND status = '-1'
AND p.plc_status IN ( );
BEGIN
OPEN search_cursor;
FETCH search_cursor INTO status_name, culture_code ;
CLOSE search_cursor;
END;
Czy mógłbyś zasugerować mi, jak używać, jeśli chcesz zasugerować jakąkolwiek inną logikę, to jest świetne.
SCOTT
próbowałem to: 'I p.plc_status IN (SELECT X *.od stołu (plcListchar) jako X); ' i Oracle podnosi ' PLS-00642: lokalne typy kolekcja nie jest dozwolony w SQL statements' Ja również poszukuje rozwiązania. – Rachcha