CREATE TABLE TEMP
(
ID VARCHAR2(20 CHAR)
, TXT CLOB
)
create or replace FUNCTION get_field_keys (field CLOB)
RETURN type_array_of_varchar2
IS
return_value type_array_of_varchar2;
BEGIN
//do some split operations(already done)
//return_value[] = 'a';
//return_value[] = 'b';
//return_value[] = 'c';
//..
return return_value;
END;
这个函数必须返回值,我们可以做
select * from TEMP where 'a' = ANY(get_field_keys(TXT))
函数get_field_keys的返回值必须设置为varchar2,我试过varray,但“ANY”不能通过这种方式工作。它必须是记录或其他东西。
答案 0 :(得分:2)
由于您的函数似乎返回TABLE
或VARRAY
类型,因此您可以在一个不需要的表达式中使用它:
SELECT * FROM temp WHERE 'a' IN (SELECT * FROM TABLE(get_field_keys(TXT))
我不确定这是否适用于ANY
量词,但无论您使用ANY
还是IN