我有一个包含一些嵌套表的对象,我想使用一个select语句来构造它。我的类型如下所示。
create or replace type number_table as table of number;
/
create or replace type multiple_tables as object
(
num_table1 number_table,
num_table2 number_table
)
以下基本上显示了我想做的事情,理想情况下只需要一个sql语句来避免上下文切换。
select multiple_tables(number_table
(select tblB.purchaseID from table_purchases tblB where tblB.customerID = tblA.customerID),
number_table
(select tblC.paymentID from table_payments tblC where tblC.customerID = tblA.customerID))
from table_customer
where table_customer.customerName = 'John Smith';
(具体错误是“ORA-00936:缺少表达”,如果有人想知道的话)
基本上,是否可以从另一个select语句中构造嵌套表?
答案 0 :(得分:2)
答案 1 :(得分:1)
您需要使用CAST MULTISET
根据需要提取数据;查询的结构应该是这样的:
select multiple_tables(
cast (multiset (select 1 from dual connect by level < 10 ) as number_table ),
cast (multiset (select 1 from dual connect by level < 10 ) as number_table )
)
from dual