如何从函数返回的记录集中查询嵌套类型字段?

时间:2013-08-06 19:36:18

标签: sql oracle plsql nested-table

我定义了以下类型:

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从嵌套类型中选择单个记录进行处理?

1 个答案:

答案 0 :(得分: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