ORA-00932: inkonsistente Datentypen: erwartet - got -

Ich habe mit Oracle(10g.2) als PHP-Programmierer seit fast 3 Jahren, aber wenn ich gab eine Zuweisung, ich habe versucht, verwenden Sie den ref Cursor-und collection-Typen für die erste Zeit. Und Ich
've durchsucht das web, wenn ich mit Problemen konfrontiert, und dies ora-00932 Fehler wirklich überwältigt mich. Ich brauche Hilfe von einem alten hand.

Hier ist, was ich die Bekämpfung,
Ich möchten wählen Sie Zeilen aus einer Tabelle, und setzen Sie Sie in einen ref-cursor, und dann mit record-Typ, sammeln Sie in einem assoziativen array. Und wieder von diesem assoziativen array, machen einen ref-cursor. Frag mich nicht warum, ich bin das schreiben eines so komplizierten code, weil ich es brauche weitere komplexe Aufgabe. Ich könnte verwirrend klingen, um Sie, so lassen Sie mich Ihnen zeigen, meine codes.

Habe ich 2 Typen definiert in der Registerkarte Dateitypen in Kröte. Einer von Ihnen ist ein Objekt-Typ:

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

Andere ist eine Sammlung geben, die mit den Objekt-Typ erstellt oben:

CREATE OR REPLACE
TYPE tr_type AS TABLE OF r_type;

Dann habe ich ein Paket erstellen:

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;

Paket, Karosserie:

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;

Kommentierte ich aus der letzten Zeile, wo ich offen ref cursor. Weil es verursacht einen Fehler, wenn ich die Prozedur ausführen, die im Toad SQL-Editor, und es ist die zweite Frage, die ich Ihnen stellen werde.
Und schließlich habe ich den code auszuführen, der in 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

Dort bekomme ich die ora-00932 Fehler.

InformationsquelleAutor Duygu Akyol | 2011-01-04
Schreibe einen Kommentar