ORA-00932: incompatible types de données: - got -

J'ai été en utilisant Oracle(10g.2) en tant que développeur PHP depuis près de 3 ans, mais quand j'ai donné une mission, j'ai essayé d'utiliser la ref curseurs et des types de collection pour la première fois. Et Je
'ai cherché sur le web, quand je confrontés à des problèmes, et ce ora-00932 erreur m'a vraiment bouleversé. J'ai besoin d'aide à partir d'une vieille main.

Voici ce que j'ai abordé avec,
Je veux sélectionner des lignes d'une table et de les mettre dans un ref cursor, puis avec l'aide de type d'enregistrement, de les rassembler dans un tableau associatif. Et à nouveau à partir de ce tableau associatif, faire un ref cursor. Ne me demandez pas pourquoi, je suis en train d'écrire un tel code compliqué, car j'en ai besoin pour les plus complexes de l'affectation. J'ai peut-être sembler déroutant pour vous, donc laissez-moi vous montrer mes codes.

J'ai 2 types définis sous l'onglet types de Crapaud. L'un d'eux est un type d'objet:

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

Autre type de collection qui utilise le type d'objet créé ci-dessus:

CREATE OR REPLACE
TYPE tr_type AS TABLE OF r_type;

Puis-je créer un package:

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;

Corps De Package:

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;

J'ai commenté la dernière ligne où j'ai ouvert curseur ref. Parce qu'il est à l'origine d'une autre erreur quand je lance la procédure en Crapaud de l'Éditeur SQL, et c'est la deuxième question que je vais poser.
Et enfin, j'ai exécuter le code en Crapaud:

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

Là, je reçois l'erreur ora-00932 erreur.

OriginalL'auteur Duygu Akyol | 2011-01-04