1

SQL Developer でいくつかのプロシージャを作成しましたが、正常に動作しています。ただし、これらすべてのプロシージャを含むパッケージを作成していますが、次のエラーが返されるため、パッケージをコーディングする正しい方法がわからないようです (パッケージ本体の作成を参照)。

 PLS-00103: Encountered the symbol "CREATE"

これが私のコードです:

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;

私はいくつかの検索を行いましたが、私が考えることができる唯一のことは、CURSORの定義に関連する問題かもしれません...確かではありません。前もって感謝します

4

1 に答える 1

2

これをsqlplusとsqldeveloperで正常に実行しました(sqldeveloperのF5:「スクリプトの実行」)。スキーマが異なるため、2 つの dml ステートメントを変更しました。

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>
于 2012-07-20T11:55:45.267 に答える