我定义了以下类型:
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从嵌套类型中选择单个记录进行处理?
答案 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