ORA-00932: tipos de datos inconsistentes: esperado - conseguido -

He estado usando Oracle (10g.2) como programador PHP durante casi 3 años, pero cuando asigné una tarea, intenté usar los cursores de referencia y los tipos de colección por primera vez. Y busqué en la web, cuando me enfrenté a problemas, y este error ora-00932 realmente me sobrecogió. Necesito ayuda de una mano vieja.

Aquí es con lo que he estado abordando, quiero seleccionar filas de una tabla y ponerlas en un cursor de referencia, y luego, usando el tipo de registro, reunirlas dentro de una matriz asociativa. Y nuevamente desde esta matriz asociativa, haga un cursor de referencia. No me pregunte por qué, estoy escribiendo un código tan complicado, porque lo necesito para tareas más complejas. Puede que te parezca confuso, así que déjame mostrarte mis códigos.

Tengo 2 tipos definidos en la pestaña de tipos en Toad. Uno de ellos es un tipo de objeto:

CREATE OR REPLACE
TYPE R_TYPE AS OBJECT(sqn number,firstname VARCHAR2(30), lastname VARCHAR2(30));

Otro es el tipo de colección que usa el tipo de objeto creado anteriormente:

CREATE OR REPLACE
TYPE tr_type AS TABLE OF r_type;

Luego creo un paquete:

CREATE OR REPLACE PACKAGE MYPACK_PKG IS
TYPE MY_REF_CURSOR IS REF CURSOR;
PROCEDURE MY_PROC(r_cursor OUT MY_REF_CURSOR);
END MYPACK_PKG;

Cuerpo del paquete:

CREATE OR REPLACE PACKAGE BODY MYPACK_PKG AS
 PROCEDURE MY_PROC(r_cursor OUT MY_REF_CURSOR) AS
  rcur MYPACK_PKG.MY_REF_CURSOR;
  sql_stmt VARCHAR2(1000);
  l_rarray   tr_type := tr_type();
                l_rec r_type;

 BEGIN
     sql_stmt :=  'SELECT 1,e.first_name,e.last_name  FROM hr.employees e ';
     OPEN rcur FOR sql_stmt;
     LOOP
       fetch rcur into l_rec;
                  exit when rcur%notfound;
     l_rarray := tr_type( l_rec );
     END LOOP;
   CLOSE rcur;
    --OPEN r_cursor FOR SELECT * FROM TABLE(cast(l_rarray as tr_type) );


END MY_PROC;
END MYPACK_PKG;

Comenté la última línea donde abro el cursor de referencia. Porque está causando otro error cuando ejecuto el procedimiento en el Editor SQL de Toad, y es la segunda pregunta que haré. Y finalmente ejecuto el código en Toad:

variable r refcursor
declare
r_out MYPACK_PKG.MY_REF_CURSOR;
begin
MYPACK_PKG.MY_PROC(r_out);
:r := r_out;
end;
print :r

Ahí me sale el error ora-00932.

Respuestas a la pregunta(1)

Su respuesta a la pregunta