3
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,我尝试了 vararray,但“ANY”不能通过这种方式工作。它必须是记录或其他东西。

4

1 回答 1

2

由于您的函数似乎返回 a TABLEorVARRAY类型,您可以在非嵌套表达式中使用它:

SELECT * FROM temp WHERE 'a' IN (SELECT * FROM TABLE(get_field_keys(TXT))

我不确定这是否也适用于ANY量词,但它对你的目标并不重要,无论你使用ANY还是IN

于 2012-10-15T06:48:51.173 回答