2 Stimmen

Definieren von Prozeduren innerhalb von Paketen

Ich habe einige Prozeduren in SQL Developer erstellt, und sie funktionieren einwandfrei. Jetzt erstelle ich jedoch ein Paket, das all diese Prozeduren enthalten soll, und kann anscheinend nicht herausfinden, wie ich das Paket richtig kodieren soll, da es den folgenden Fehler zurückgibt (in Bezug auf CREATE des PACKAGE BODY):

 PLS-00103: Encountered the symbol "CREATE"

Hier ist mein Code:

CREATE OR REPLACE PACKAGE package_test AS

PROCEDURE copy_object;

END package_test;

CREATE OR REPLACE PACKAGE BODY package_test AS

PROCEDURE copy_object IS
CURSOR object_cursor IS
SELECT COD_OBJECT, OBJECT_NAME FROM OBJECT;

object_rec object_cursor%rowtype;

BEGIN
EXECUTE IMMEDIATE 'TRUNCATE TABLE DATABASE2.D_OBJECT';
FOR object_rec IN object_cursor
LOOP
    INSERT INTO DATABASE2.D_OBJECT (COD_OBJECT,OBJECT_NAME) VALUES (object_rec.OOD_OBJECT,object_rec.OBJECT_NAME);
END LOOP;
COMMIT;
END copy_object;
END package_test;

Ich habe ein wenig gesucht und das Einzige, was mir einfällt, ist vielleicht ein Problem, das mit der Definition des CURSORs zusammenhängt... ich bin mir aber nicht sicher. Vielen Dank im Voraus

2voto

Glenn Punkte 8692

Ich habe dies erfolgreich in sqlplus und sqldeveloper ausgeführt (F5 in sqldeveloper: "Run Script"). Ich habe die beiden dml-Anweisungen geändert, da mein Schema anders ist.

SQL> CREATE OR REPLACE PACKAGE package_test AS
  2
  3  PROCEDURE copy_object;
  4
  5  END package_test;
  6  /

Package created.

SQL>
SQL> CREATE OR REPLACE PACKAGE BODY package_test AS
  2
  3  PROCEDURE copy_object IS
  4  CURSOR object_cursor IS
  5  SELECT * from dual;
  6
  7  object_rec object_cursor%rowtype;
  8
  9  BEGIN
 10  EXECUTE IMMEDIATE 'TRUNCATE TABLE DATABASE2.D_OBJECT';
 11  FOR object_rec IN object_cursor
 12  LOOP
 13      NULL; --INSER INTO DATABASE2.D_OBJECT (COD_OBJECT,OBJECT_NAME) VALUES (object_rec.OOD_OBJECT,object_rec.OBJECT_
NAME);
 14  END LOOP;
 15  COMMIT;
 16  END copy_object;
 17  END package_test;
 18  /

Package body created.

SQL>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X