如何在oracle中创建函数,我们可以在ANY中使用这个函数的结果

时间:2012-10-15 06:44:43

标签: oracle

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”不能通过这种方式工作。它必须是记录或其他东西。

1 个答案:

答案 0 :(得分:2)

由于您的函数似乎返回TABLEVARRAY类型,因此您可以在一个不需要的表达式中使用它:

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

我不确定这是否适用于ANY量词,但无论您使用ANY还是IN

,它都无关紧要您的目标