我有一个参考其他对象的嵌套表:
表:
create type towar as object (
towar_id integer,
nazwa varchar2(64),
cena decimal(6,2)
);
create table towar_tab of towar;
create or replace type towar_zamowienie as object (
ilosc integer,
produkt ref towar
);
create type towar_zamowienie_tab as table of towar_zamowienie;
create table zamowienie_tab (
id_zamowienie integer primary key,
klient ref klient,
towary towar_zamowienie_tab
)
nested table towary store as zamowienie_towar_nested;
过程:
declare
cursor zamowienia is
select deref(klient) k, id_zamowienie id_zam, towary from zamowienie_tab;
i integer;
tow towar;
begin
for r in zamowienia loop
dbms_output.put_line(r.id_zam);
for i in 1 .. r.towary.count loop
--select (deref(v)) into tow from r.towary(i) v;
dbms_output.put_line(' '||i||'. ['||r.towary(i).ilosc||'] ' || tow.nazwa);
end loop;
end loop;
NULL;
end;
现在在r.towary
我有produkt ref towar
的嵌套表格,我想要打印字段nazwa
。这条注释行不起作用,它说“SQL命令没有正确结束”。我必须取消引用它。通常情况下我会用关系来制作它,但我必须使用对象和引用。
答案 0 :(得分:0)
替换
行select (deref(v)) into tow from r.towary(i) v;
与
select deref(r.towary(i).produkt) into tow from dual;
r.towary(i)
不是表格,因此您无法select
。此外,tow
的类型为towar
,r.towary(i)
为towar_zamowienie
,因此我假设您要访问produkt
属性。