【问题标题】:PS/SQL dereference from nested tablePL/SQL 与嵌套表的区别
【发布时间】:2015-06-13 20:54:08
【问题描述】:

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

表格:

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

【问题讨论】:

标签: plsql


【解决方案1】:

换行

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 属性。

【讨论】:

  • 谢谢,我忘了dual 包含“局部变量”
猜你喜欢
  • 1970-01-01
  • 2014-08-29
  • 2014-10-27
  • 2013-10-25
  • 2017-07-17
  • 1970-01-01
  • 2014-04-01
  • 2013-11-13
  • 1970-01-01
相关资源
最近更新 更多