Steps:
1)
CREATE OR REPLACE TYPE INTEGER_TABLE AS TABLE OF INTEGER
2)
CREATE OR REPLACE FUNCTION SPLIT_INT
(
P_LIST VARCHAR2,
P_DEL VARCHAR2 := ','
) RETURN INTEGER_TABLE PIPELINED
IS
L_IDX PLS_INTEGER;
L_LIST VARCHAR2(32767) := P_LIST;
BEGIN
LOOP
L_IDX := INSTR(L_LIST,P_DEL);
IF L_IDX > 0
THEN
PIPE ROW(SUBSTR(L_LIST,1,L_IDX-1));
L_LIST := SUBSTR(L_LIST,L_IDX+LENGTH(P_DEL));
ELSE
PIPE ROW(L_LIST);
EXIT;
END IF;
END LOOP;
RETURN;
END SPLIT_INT;
3) How to use it?
SELECT * FROM TABLE_NAME table
WHERE
table.Id IN (SELECT COLUMN_VALUE AS ID FROM TABLE ( SPLIT_INT ( Input_Parameter_string)))
Tomado de: http://www.aprender-a-programar.com/funcion-split-en-oracle
eso está en TSAV?
ResponderEliminar