0

カーソルを使用して、ネストされたテーブルの内容を表示したいと考えています。以下を試してみましたが、うまくいきません。「put_line」の引数が正しくありませんが、理由がわかりません。

create or replace type toys_t as table of varchar2(40);

create or replace type kid_t as object (name varchar2(10), toys toys_t);

create table kid of kid_t nested table toys store as table_toys;

insert into kid values('Bob', toys_t('truck','ball','doll'));

select t.* from kid k, table(k.toys) t where k.name = 'Bob';


declare

cursor cursor_table is
   select t.* from kid k, table(k.toys) t where k.name = 'Bob';

begin

   for i in cursor_table loop
      dbms_output.put_line(i);
   end loop;

end;

とても簡単です。子供には名前とおもちゃのリストがあり、おもちゃを表示したいのですが、「選択」からではなくカーソルから表示したいのです。

あなたの助けに感謝します。

ボブ

4

1 に答える 1

2

ループで列名を参照する必要があります

SQL> ed
Wrote file afiedt.buf

  1  declare
  2    cursor cursor_table is
  3     select t.* from kid k, table(k.toys) t where k.name = 'Bob';
  4  begin
  5     for i in cursor_table loop
  6        dbms_output.put_line(i.column_value);
  7     end loop;
  8* end;
SQL> /
truck
ball
doll

PL/SQL procedure successfully completed.
于 2012-06-12T15:58:08.180 に答える