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

4

1 回答 1

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
于 2013-08-07T10:06:20.890 回答