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 のセットでなければならないので、varray を試しましたが、この方法では "ANY" が機能しません。レコードか何かである必要があります。

4

1 に答える 1

2

TABLE関数はor型を返すように見えるためVARRAY、ネスト解除式で使用できます。

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

これが量指定子でも機能するかどうかはわかりませんが、使用するかANYどうかに関係なく、目標には関係ありません。ANYIN

于 2012-10-15T06:48:51.173 に答える