Plsql PS/SQL从嵌套表中取消引用

Plsql PS/SQL从嵌套表中取消引用,plsql,Plsql,我得到了一个引用其他对象的嵌套表: 表: 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

我得到了一个引用其他对象的嵌套表:

表:

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命令没有正确结束”,我必须取消引用它。通常我只会使用关系,但我必须使用对象和引用。

替换行

select (deref(v)) into tow from r.towary(i) v;


r.towary(i)
不是一个表,因此您不能从中选择。此外,
tow
具有类型
towar
,并且
r.towary(i)
是一个
towar\u Zamovienie
,因此我假设您想要访问
produkt
属性。

类似的问题:谢谢,我忘记了
dual
包含“局部变量”
select deref(r.towary(i).produkt) into tow from dual;