从一列嵌套表中选择SQL
问题描述:
我对如何打印定义类型的对象的所有值有疑问。我有一个PROJECTT类型的对象表SP。当我在SP中查询其对象的行时,它将返回对象的类型(PROJECTT),但不返回对象的内容。 PROJECTT类型有5个varchar列,这是我想要返回的。从一列嵌套表中选择SQL
下面是我的SQL我的表,然后使用Java SAX解析器和XML文件类型
set echo on
set serveroutput on
drop table ACTIVES;
drop table POBJECT;
drop type ACTIVEST;
drop type POBJECTT;
create type POBJECTT as
object (p# varchar(5), pname varchar(20), color varchar(10),
weight number, city varchar(10));
create table POBJECT of POBJECTT;
insert into POBJECT(p#, pname, color, weight, city) values
('P1', 'Nut', 'Red', 12, 'London');
insert into POBJECT(p#, pname, color, weight, city) values
('P2', 'Bolt', 'Green', 17, 'Paris');
insert into POBJECT(p#, pname, color, weight, city) values
('P3', 'Screw', 'Blue', 17, 'Rome');
insert into POBJECT(p#, pname, color, weight, city) values
('P4', 'Screw', 'Red', 14, 'London');
insert into POBJECT(p#, pname, color, weight, city) values
('P5', 'Cam', 'Blue', 12, 'Paris');
insert into POBJECT(p#, pname, color, weight, city) values
('P6', 'Cog', 'Red', 19, 'London');
create type ACTIVEST as table of ref POBJECTT;
/
create table ACTIVES(s# varchar(5), sname varchar(20), status number,
city varchar(10), sp ACTIVEST)
,我填的活性成分的SP柱在POBJECTS表中的行引用。
我想用select语句打印这些行。我不太清楚如何让SP的目标的价值,所以我就开始喜欢的东西:
select * from (select sp from actives where S# = 'S1')
答
select
deref(column_value).p# p#
,deref(column_value).pname pname
,deref(column_value).color color
,deref(column_value).weight weight
,deref(column_value).city city
from actives cross join table(sp)
where s# = 'S1';
P# PNAME COLOR WEIGHT CITY
----- -------------------- ---------- ---------- ----------
P1 Nut Red 12 London
P2 Bolt Green 17 Paris
SQL>
假设你遇到这样的插入之前:
insert into actives
select 'S1', 'sname', 0, 'city'
,activest(
(select ref(p) from pobject p where p# = 'P1')
,(select ref(p) from pobject p where p# = 'P2')
)
from dual;
而且,你的ACTIVES DDL不适合我。我不得不在nested table sp store as sp_tab;
的末尾添加nested table sp store as sp_tab;
。
+0
非常好!我的错误,我错误地离开了这条线。你的解决方案很棒。谢谢! – Teknos 2012-04-21 04:22:05
请发布您的表和类型的CREATE语句以及您的查询的SQL。 – 2012-04-20 16:56:08
+1用于补充问题@BobJarvis评论 – Matthew 2012-04-20 19:27:46
更新了更多信息! :) – Teknos 2012-04-20 20:48:34