Skip to content Skip to sidebar Skip to footer

How To Return A Dynamic Result Set In Oracle Function

I found a string tokenizer query on the net and packaged it into the below function, which return the dynamic set of tokens. The function compiles successfully but somehow I get th

Solution 1:

Assuming the function compiles, try:

SELECT*FROMTABLE(strtokenizer('a,b,c',','));

Reference:

The function needs to be corrected - use:

CREATE OR REPLACE FUNCTIONStrTokenizer (string IN VARCHAR2, 
                                         delimiter IN VARCHAR2)
RETURNkey_value_tableASv_retkey_value_tableBEGINSELECTCAST(MULTISET(SELECT LEVEL k, 
                              SUBSTR(STRING_TO_TOKENIZE, DECODE(LEVEL, 1, 1, INSTR(STRING_TO_TOKENIZE, DELIMITER, 1, LEVEL-1)+1), 
                              INSTR(STRING_TO_TOKENIZE, DELIMITER, 1, LEVEL) - DECODE( LEVEL, 1, 1, INSTR(STRING_TO_TOKENIZE, DELIMITER, 1, LEVEL-1)+1)) v
                         FROM (SELECT string || delimiter AS STRING_TO_TOKENIZE , 
                                      delimiter AS DELIMITER
                                 FROM DUAL)
                   CONNECT BY INSTR(STRING_TO_TOKENIZE, DELIMITER, 1, LEVEL)>0 
                     ORDER BY level ASC) AS key_value_table)
    INTOv_retFROMDUAL;

  RETURN v_ret;

END;

Post a Comment for "How To Return A Dynamic Result Set In Oracle Function"