Oracle SQL在查询中动态实例化类型表

时间:2016-09-15 12:59:29

标签: sql oracle

我有以下类型:

ng-mobile-click

create or replace TYPE XXMC_CUST_OV_ACCT_TYP AS OBJECT (
  account_number        NUMBER
, account_description   VARCHAR2(1000)
, classification        VARCHAR2(200)
, account_type          VARCHAR2(50)
, sales_channel         VARCHAR2(100)
, date_established      DATE
, status                VARCHAR2(50)
);

我想要实现的是使用单个create or replace TYPE "XXMC_TABLE_CUST" AS TABLE OF APPS.XXMC_CUST_OV_ACCT_TYP; 查询populate XXMC_TABLE_CUST类型XXMC_CUST_OV_ACCT_TYP多种SQL类型。我可以通过PL/SQL循环浏览光标并使用其他记录扩展XXMC_TABLE_CUST来执行此操作,但我希望在单行SQL查询中执行此操作。

如果我尝试使用此查询来获取XXMC_CUST_OV_ACCT_TYP类型的多个记录:

SELECT XXMC_CUST_OV_ACCT_TYP
(10000||rownum, 'A', 'B', 'C', 'D', '15-DEC-2003', 'Active') 
from HZ_PARTIES where rownum<4

然后我在输出中得到这样的东西:

[APPS.XXMC_CUST_OV_ACCT_TYP]

[APPS.XXMC_CUST_OV_ACCT_TYP]

[APPS.XXMC_CUST_OV_ACCT_TYP]

但是,当我尝试使用以下查询将这些多个记录分组到一个XXMC_TABLE_CUST对象中时:

SELECT XXMC_TABLE_CUST(
(SELECT XXMC_CUST_OV_ACCT_TYP
    (10000||rownum, 'A', 'B', 'C', 'D', '15-DEC-2003', 'Active') from HZ_PARTIES where rownum<4
)) 
from DUAL;

我收到以下错误消息:

  

单行子查询返回多行

如何将这些多个XXMC_CUST_OV_ACCT_TYP行转换为XXMC_CUST_OV_ACCT_TYP

的表格

感谢。

1 个答案:

答案 0 :(得分:0)

Ponder Stibbons在上述评论中回答:

select cast(multiset(select * from hz_party) as xxmc_table_cust) from dual