Oracle SQL Developerを使用してOracleパッケージを作成していますが、このコンパイルエラーが発生しました:
エラー(7,1):PLS-00103:シンボル "CREATE"に遭遇しました。
create or replace
PACKAGE TestPackage AS
FUNCTION beforePopulate RETURN BOOLEAN;
FUNCTION afterPopulate RETURN BOOLEAN;
END TestPackage;
CREATE OR REPLACE PACKAGE BODY TestPackage AS
FUNCTION beforePopulate RETURN BOOLEAN AS
BEGIN
DELETE FROM TEST_1;
INSERT INTO TEST_1
SELECT * FROM TEST WHERE VALUE=300;
COMMIT;
RETURN TRUE;
EXCEPTION
WHEN OTHERS THEN
RETURN FALSE;
END;
FUNCTION afterPopulate RETURN BOOLEAN AS
BEGIN
UPDATE TEST SET RESULT="completed" WHERE VALUE=300;
COMMIT;
RETURN TRUE;
EXCEPTION
WHEN OTHERS RETURN FALSE;
END;
END;
END TestPackage;
6行目に/
を追加すると、エラーは次のようになりました。
エラー(6,1):PLS-00103:シンボル「/」が発生しました
私はこのような空の実装に疲れました:
create or replace
package package1 as
END PACKAGE1;
CREATE OR REPLACE
package body package1 as
end package1;
私は同じエラーを受け取りました。
BEGIN、ENDなどがある場合、SQLではなくPL/SQLを使用しています。
PL/SQLブロックは、行の先頭で単一の(「フォワード」)スラッシュで終了する必要があります。これにより、PL/SQLブロックの処理が完了したことがOracleに通知されるため、そのテキストブロックがコンパイルされます。
SQLクエリ-セミコロンで終了:
update orders set status = 'COMPLETE' where order_id = 55255;
PL/SQLブロック-コマンド区切りセミコロン、ブロックはスラッシュで終了します:
create or replace procedure mark_order_complete (completed_order_id in number)
is
begin
update orders set status = 'COMPLETE' where order_id = :completed_order_id;
end mark_order_complete;
/
これは、Oracle SQL Developerを使用して私にとってはうまくいきました:
create or replace PACKAGE TestPackage AS
FUNCTION beforePopulate
RETURN BOOLEAN;
FUNCTION afterPopulate
RETURN BOOLEAN;
END TestPackage;
/
CREATE OR REPLACE PACKAGE BODY TestPackage AS
FUNCTION beforePopulate
RETURN BOOLEAN AS
BEGIN
DELETE FROM TESTE;
INSERT INTO TESTE
SELECT 1,1,1 FROM DUAL;
COMMIT;
RETURN TRUE;
EXCEPTION
WHEN OTHERS THEN
RETURN FALSE;
END;
FUNCTION afterPopulate
RETURN BOOLEAN AS
BEGIN
UPDATE TESTE SET TESTE='OK' WHERE TESTE='';
COMMIT;
RETURN TRUE;
EXCEPTION
WHEN OTHERS THEN RETURN FALSE;
END;
END TestPackage;
/
使用するテーブルと列を実際に作成するまで、実行できませんでした。
数時間のフラストレーションの後、私はなんとかこのものを機能させることができました。 exact問題がありました。
私にとっての解決策は、パッケージコードではなく、スクリプトとして実行することでした。 SQLワークシートでスラッシュは正しく機能します。私は違いを付けています、それがあなたを助けることを願っています!
同じ問題がありました。メインメニューodを使用してパッケージを作成し、同じ.sqlファイル内にパッケージ宣言と本体を配置します。すべてのコードをコピーして新しいワークシートに貼り付け、後に "/" package_nameを終了し(パッケージ宣言と本文の後)、ワークシートをスクリプトとして実行します。
f5でパッケージとパッケージ本体を個別に実行する
Sqldeveloperのすべてのdbパッケージコード(プロシージャヘッダーと実装の両方)をuser/packages/MY_PACKAGE_NAME/MY_PACKAGE_BODYの代わりにコピーしたときに、この問題が発生しました(エラー(6,1):PLS-00103:シンボル "/"に遭遇しました)ヘッダー(末尾に '/'なし)をuser/packages/MY_PACKAGE_NAMEにコピーし、実装(先頭にヘッダーなしで '/'なしに)をuser/packages/MY_PACKAGE_NAME/MY_PACKAGE_BODYにコピーします。