jueves, 12 de julio de 2012

Slipt string/int in Oracle 11g

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



1 comentario: