Отправить список значений в виде строки XML.
Пример обработки XML с использованием XMLTABLE:
SELECT cid1 FROM SomeTable
WHERE cid2 in (
SELECT val
FROM XMLTABLE('/list/val'
PASSING xmltype('<list><val>a1</val><val>a2</val><val>a3</val></list>')
COLUMNS val VARCHAR2(32) PATH '/'));
);
Или:
- Создать новый тип оракула TABLE OF
NUMBER / или VARCHAR
- Создать новую функцию оракула, которая будет
разбери свой список в таблицу чисел или
VARCHAR
Тогда вы можете сделать что-то вроде этого:
ВЫБРАТЬ cid1 ИЗ SomeTable ГДЕ cid2 в (ВЫБРАТЬ * ИЗ таблицы (LIST_TO_NUMBER_TABLE (p_YourValuesList))));
Из .NET просто передайте значение параметра в этом формате: 12,33,54,35,65
Вот пример функции list_to_table:
create or replace FUNCTION LIST_TO_NUMBER_TABLE
(
p_LIST IN VARCHAR2
)
RETURN NUMBER_TABLE PIPELINED
AS
STRING_ LONG := p_LIST || ',';
COMMAINDEX_ PLS_INTEGER;
INDEX_ PLS_INTEGER := 1;
BEGIN
LOOP
COMMAINDEX_ := INSTR(STRING_, ',', INDEX_);
EXIT WHEN COMMAINDEX_ = 0;
PIPE ROW (TO_NUMBER(SUBSTR(STRING_, INDEX_, COMMAINDEX_ - INDEX_)));
INDEX_ := COMMAINDEX_ + 1;
END LOOP;
RETURN;
END;