首页 > 解决方案 > Oracle 视图对象类型列

问题描述

对象类型

create or replace TYPE "TYPE_FE_FEE_DETAIL" AS OBJECT
(
  FE_AMOUNT VARCHAR2(25),
  CURR_ID VARCHAR2(5),
  PROFILE_TYPE VARCHAR2(1),
  ISO_CODE VARCHAR2(25)
);

create or replace TYPE "TYPE_TB_FE_FEE_DETAIL" AS TABLE OF type_fe_fee_detail;

我们有一个包含两列的视图,其中第二列是 OBJECT TYPE 并且具有类似的数据

EPAYPROD_M3.TYPE_TB_FE_FEE_DETAIL(EPAYPROD_M3.TYPE_FE_FEE_DETAIL('10', '1', '1', '818'))

我需要将这四个值插入一个有四个单独列的表中。我在这样做时遇到了麻烦。

标签: oracleobjecttypesviewuser-defined-types

解决方案


TYPE_TB_FE_FEE_DETAIL是一个嵌套表。要获取属性值,请将其取消嵌套。

您可以使用表运算符执行此操作:

create or replace TYPE "TYPE_FE_FEE_DETAIL" AS OBJECT
(
  FE_AMOUNT VARCHAR2(25),
  CURR_ID VARCHAR2(5),
  PROFILE_TYPE VARCHAR2(1),
  ISO_CODE VARCHAR2(25)
);
/

create or replace TYPE "TYPE_TB_FE_FEE_DETAIL" AS TABLE OF type_fe_fee_detail;
/
  
with rws as (
  select type_tb_fe_fee_detail(type_fe_fee_detail('10', '1', '1', '818')) obj
  from   dual
)
  select t.*
  from   rws r, table ( r.obj ) t;
  
FE_AMOUNT   CURR_ID   PROFILE_TYPE   ISO_CODE   
10          1         1              818   

推荐阅读