Cómo mostrar el contenido de una tabla anidada con un cursor en PL/SQL

Quiero mostrar el contenido de una tabla anidada usando un cursor. He intentado lo siguiente pero no funciona. Los argumentos en "put_line" no son correctos, pero no sé por qué.

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;

Es muy simple. Un niño tiene un nombre y una lista de juguetes y quiero mostrar los juguetes pero no desde un "select" sino con un cursor.

Gracias por tu ayuda.

Chelín

preguntado el 12 de junio de 12 a las 16:06

1 Respuestas

Debe hacer referencia al nombre de la columna en el ciclo

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.

Respondido el 12 de junio de 12 a las 16:06

Gracias por su respuesta y respuesta rápida. - bob lado oscuro

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.