我需要在IN运算符中使用带有TABLE类型的变量

时间:2014-12-10 08:10:35

标签: sql oracle plsql

我需要PL / SQL的帮助。如何使用带有IN数据类型的变量(在我的情况下,这个变量涉及3个VARCHAR2元素)和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;

1 个答案:

答案 0 :(得分:2)

<强>首先
在架构级别(即不在包中)声明您的表数据类型。

,然后

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

享受!