2014-12-10 2 views
-1

Мне нужна помощь с PL/SQL. Как я могу использовать переменную с типом данных TABLE (в моем случае эта переменная включает в себя 3 элемента VARCHAR2) с оператором IN, без использования доступа по индексу? Пример Мне нужно использовать переменную с типом ТАБЛИЦА в операторе IN

select field1 
from dual 
where field1 in (myTableVariable); 

myTableVariable необходимость возвращения из функции.

Не законченная функция:

declare 
    v_string varchar2(100); 
    v_string2 varchar2(100); 
    TYPE V_ARRAY IS TABLE OF VARCHAR2(10) 
     INDEX BY BINARY_INTEGER; 
    result V_ARRAY; 
    n number; 
begin 
    n := 1; 
    v_string := '13,15,02'; 
    while v_string != ' ' loop 
     select regexp_substr(v_string, '^[a-z0-9]*', 1), 
       regexp_replace(v_string, '^[a-z0-9]*(,|$)', '') 
     into v_string2, v_string 
     from dual; 
     result(n) := v_string2; 
     n := n + 1; 
     dbms_output.put_line(v_string2); 
    end loop; 
    return result; 
end; 
+0

use where field1 in (выберите FieldToSelect from dbo.FunctionName (Параметры)) – Sandeep

+0

В функции я хочу вернуть переменную с типом данных TABLE, это возможно? – grossoghur

+0

вы можете создать функцию таблицы в sql – Sandeep

ответ

1

Первого:
Объявите тип данных таблицы на уровне схемы (т.е. не в пакете).

Тогда:

select field1 
from dual 
where feld1 in (select column_value from table(myTableVariable)); 

Наслаждайтесь!

Смежные вопросы