2012-12-25 62 views
1
CREATE OR REPLACE TYPE pack.D_O IS OBJECT(
r number, 
l number, 
s_pack number(3), 
s_pack_name varchar2(50), 
n_uch number(5), 
type_name varchar2(30), 
date_att date, 
cause_att number(2), 
cause_att_name varchar2(250) 
) 

---------------------------------------------------------------------- 
CREATE OR REPLACE TYPE pack.D_T IS TABLE OF pack.D_O; 

---------------------------------------------------------------------- 
CREATE OR REPLACE TYPE pack.d2_o IS OBJECT(
d NUMBER(5), 
n VARCHAR2(75), 
m VARCHAR2(75), 
f number, 
z pack.D_T 
) 

---------------------------------------------------------------------- 
select pack.d2_O(
manager, 
name, 
office, 
regalias, 
? -- how to fill "z" collection here? 
) 
from 
t1,t2 
where 
..... 

回答

4

你需要创建一个D_T,有0个或多个D_O S:

select pack.d2_O(
    manager, 
    name, 
    office, 
    regalias, 
    pack.D_T(
    pack.D_O(1,2,3,4,5,6,sysdate,8,9), 
    pack.D_O(1,2,3,4,5,6,sysdate,8,9) 
) 
) 
from 
t1,t2 

编辑

或者使用CAST(COLLECT从子查询填充Z:

select pack.d2_O(
    manager, 
    name, 
    office, 
    regalias, 
    (
    select cast(collect(d_o(a,b,c,d,e,f,g,h,i)) as d_t) 
    from t2 
) 
) 
from 
t1 
+0

谢谢!但我怎样才能使用子查询填充“z”? pack.D_T的数据绑定到某个表,我们应该动态地填充它,我们没有一些特定的数据。 – kseen

相关问题