2013-08-06 62 views
1

我有以下类型定义:如何从函数返回的记录集中查询嵌套类型字段?

TYPE N_TXT IS TABLE OF VARCHAR2(300); 

TYPE N_TYPE IS RECORD (FIELD_1 VARCHAR2 (100) 
         , FIELD_2 N_TXT); 

TYPE T_TYPE IS TABLE OF N_TYPE; 

而且创造了一个函数返回一个表记录类型:

FUNCTION fn_test (p_1 IN SMALLINT) RETURN t_type PIPELINED .... 

然后我就可以查询的结果,从这一集:

SELECT * FROM TABLE (fn_test(P_1)); 

检索所有数据。

如果field_2有多个记录,例如3记录了放将返回这样的事情:

FIELD_2 

++++++++++++++++++++++++++++++ 

N_TYPE(record1, record2, record3) 

你如何解开field_2从嵌套式处理选择单个记录?

回答

3
WITH 
    ft 
AS (
     SELECT 
      * 
     FROM TABLE fn_test(P_1) 
    ) 
SELECT 
    ft.FIELD_1 f1, 
    A.column_value f2 
FROM 
    ft, TABLE(ft.FIELD_2) A 
相关问题