架線呼出しの手続き/機能別のOracleパッケージ
質問
を話し合いまして、パフォーマンスへの影響という共通機能/手続きは別パッケージをコピー各パッケージです。
私の考えであることかクリーナーの共通コードをパッケージにも安心のオーバーヘッド。
思想/経験?
解決
一つの場所にそれを入れて、多くのからそれを呼び出す - それは、基本的なコードの再利用です。別のパッケージを呼び出すことで、任意のオーバーヘッドが非常に小さいだろう。彼らはまだそれを疑うならば、彼らはパフォーマンスの違いを実証するために取得ます。
他のヒント
worriersは、パフォーマンスのオーバーヘッドを実証することによって、彼らの懸念の妥当性を証明するために自由に完璧です。それは些細なことするはずます。
一方で、彼らは複数の場所でコードを繰り返すことで、メモリ使用量とメンテナンスのオーバーヘッドを考慮する必要があります。
一般的なコードは、1つのパッケージになっています。
を除き、呼び出しの手順でパッケージに位置す 異なるデータベース 上DBリンク、オーバーヘッドの呼び出し手順を他のパッケージは無視できます。
あ性能の懸念、メモリ上の懸念が少ない。それには"Oracle黒マジック"です。例えば、チェック このリンク.できれば明確に理解しうることは、自分達をOracleます。ればいいので本当にハードコアなんですよ。
何をすべきは、しかし、質問の依存関係.Oracleのパッケージの2パート スペック や 本体: スペック はヘッダー、 公開 手続きや機能、可視光以外のパッケージ)を宣言しています。本体 が実施しています。は密接につない2 別 データベースオブジェクト。
Oracle用のパッケージ状況を示す場合、パッケージには有効または無効になります。場合はパッケージは無効となりますが、そのすべてのその他のパッケージ に依存しているのでは無効となります。例えば、プログラムを呼び出手続きのパッケージ、通話の手順でパッケージB、ということ すプログラム により パッケージ、パッケージに依存パッケージBOracleこの関係は他、ということ プログラムによりパッケージB逆にいえば、パッケージは、プログラムもブレーキ(終了しエラー)。
ることは自明である。が明らかでは、Oracleまたトラックの依存関係のコンパイル時にパッケージ仕様
については、"仕様"と身体の両方のパッケージやパッケージ億ため、有効になります。そこまで変えていくこのパッケージ本体のパッケージBで変更するだけなので身体ではなくスペック Oracleは、パッケージBと呼ばれていないものです。
がの場合の身体を変更するパッケージの仕様、Oracle容疑者がその一部変更 手続きのパラメータダイナミックレンジの広い、マーク 全体のチェーン として無効な、パッケージB-Aおよびプログラム).ごOracleをチェックしない場合は、仕様は変更するだけでチェックしtimestemp.のですが、それだけで本当に良かっrecomplieスペックを無効にします。
場合は無効うんだプログラムが失敗します。だけで一時間後、オラクルを再コンパイルすべて自動的に実行することができます。
この混乱している。ことになるOracle.いやあなたを包み込む脳にすぎます。だけ忘れてはならないことをカップルのもの
複雑なインター-パッケージの依存関係が可能です。ばひとつのその他のものとなっており、一つ以上のもので その確率を覆すべての再コンパイルを伴うデータベースオブジェクトは非常に高い。最悪の場合は"円形"依存関係がパッケージ通話の手順でパッケージBは、パッケージB電話の手順でパッケージA.この場合ではほとんど不可能であることによるコンパイルなブレーキです。
いパッケージ仕様、パッケージ本体に 別 ソースファイルです。びに切り替える必要性がある場合、本体のみ、直接手を触れないで仕様!