これはパッケージを作成する私の最初の試みなので、私は本当に明白な何かを見逃しているに違いありません。Oracleパッケージでプライベート・プロシージャを実行するにはどうすればよいですか?
明らかに、パッケージ本体に仕様セクションに含まれていないプロシージャがある場合、それらのプロシージャはプライベートです。私が持っている問題は、一度私がそれらを作ったら参照それらのプライベートパッケージを理解するように思えないということです。そして、SQL Developerは、「警告が表示されて実行が完了しました」というメッセージが表示されないようにすることを拒否しています...
例として、これは動作しません私もどちらかの仕事をしていないtestPackage.privateProc
、としてそれを参照しようとした
CREATE OR REPLACE PACKAGE BODY testPackage AS
PROCEDURE privateProc; --Forward declaration
PROCEDURE publicProc IS
BEGIN
EXECUTE privateProc();
END;
PROCEDURE privateProc IS
BEGIN
DBMS_OUTPUT.PUT_LINE('test');
END;
END testPackage;
:前述のコンパイラエラー)をスローします。
私は間違っていますか?
これは役に立ちました。私は正しく電話していましたが、私は "前方宣言"が必要であるかどうか分かりませんでした。 –
@ end-user - 前方宣言は、プライベートプロシージャが呼び出される前に宣言しない場合にのみ必要です。個人的には、維持するための追加の署名を与えるのではなく、正しい順序で手続きを宣言する方が簡単です。 – APC
もう一つの利点は、宣言するだけでなく、あらかじめプロシージャを実装しておけば、パラメータのコード提案が得られることです。 少なくともToadの動作です。 – ch1ll