Oracle
 sql >> база данни >  >> RDS >> Oracle

как да върна динамичен набор от резултати във функцията на Oracle

Ако приемем, че функцията се компилира, опитайте:

SELECT * 
  FROM TABLE(strtokenizer('a,b,c',','));

Справка:

Функцията трябва да бъде коригирана - използвайте:

CREATE OR REPLACE FUNCTION StrTokenizer (string IN VARCHAR2, 
                                         delimiter IN VARCHAR2)
RETURN key_value_table AS v_ret key_value_table
BEGIN
  SELECT CAST(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)
    INTO v_ret
    FROM DUAL;

  RETURN v_ret;

END;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Query работи на Oracle 11g, но не успява на Oracle 8i

  2. ORA-01097

  3. връзка с базата данни на oracle в web.config asp.net

  4. Съхранена процедура-SQL разработчик

  5. Коригиране на грешка „ORA-01789:блокът на заявката има неправилен брой колони с резултати“