Существует другой возможный способ задания параметра в виде строки с разделителями , например:
где #parameter - простая строка с разделителями: "'1,2,3,4,5,6,7,8,9,10'"
ВЫБРАТЬ UA, UB ИЗ CU, ГДЕ UA в (ВЫБРАТЬ SUBSTR (STRING_TO_TOKENIZE, DECODE (УРОВЕНЬ, 1, 1, INSTR (STRING_TO_TOKENIZE, DELIMITER, 1, LEVEL-1) +1), INSTR (STRING_TO_TOKENIZE, DELIM, DEL LEVEL) - DECODE (LEVEL, 1, 1, INSTR (STRING_TO_TOKENIZE, DELIMITER, 1, LEVEL-1) +1)) FROM (SELECT #parameter || ',' AS STRING_TO_TOKENIZE, ',' AS DELIMITER FROM DUAL) СОЕДИНИТЬ ПО INSTR (STRING_TO_TOKENIZE, DELIMITER, 1, LEVEL)> 0)
Хитрость в следующем подзапросе, так как он возвращает проанализированные строки из строки с разделителями:
SELECT SUBSTR (STRING_TO_TOKENIZE, DECODE (LEVEL, 1, 1, INSTR (STRING_TO_TOKENIZE, DELIMITER, 1, LEVEL-1) +1),
INSTR (STRING_TO_TOKENIZE, DELIMITER, 1, LEVEL) - ДЕКОД (LEVEL, 1, 1, INSTR (STRING_TO_TOKENIZE, DELIMITER, 1, LEVEL-1) +1)) ОТ
(ВЫБЕРИТЕ 1,2,3,4,5,6,7,8,9,10 '||', 'AS STRING_TO_TOKENIZE,', 'КАК РАЗДЕЛИТЕЛЬ ИЗ ДВОЙНОГО) ПОДКЛЮЧИТЕ ПО INSTR (STRING_TO_TOKENIZE, РАЗДЕЛИТЕЛЬ, 1, УРОВЕНЬ )> 0