0

pl/sqlは初めてです。PROC1という名前のプロシージャを作成しましたが、同じ名前のプロシージャを作成している別の人と私のプロシージャがオーバーライドされる場合。同じ名前のプロシージャproc1をオーバーライドしない解決策はありますか?

4

2 に答える 2

0

その人が「プロシージャの作成...」を訴えるプロシージャを作成すると、もちろん警告が表示されますが、「プロシージャの作成または置換...」ではエラーは発生しません。あ、はい、

スタンドアロン プロシージャは、テーブル、ビュー、シーケンス、プライベート シノニム、スタンドアロン プロシージャ、スタンドアロン ストアド関数、パッケージ、マテリアライズド ビュー、およびユーザー定義型と名前空間を共有します。これらのタイプは、関数の作成を妨げます。

ただし、これは通常は問題ではなく、オブジェクト名に TAB や FNC などのプレフィックスを付ける必要はありません。これらのオブジェクトの適切に構成された名前は、通常、オブジェクトのタイプを指すためです。USERS (複数名詞 -> テーブル)、CREATE_INVOICE (ACTION + NOUN -> 手続き)、ACTIVE_USERS (形容詞 + 名詞 -> ビュー)

ただし、同じ名前で仕様が異なる複数のプロシージャがあり、それらがパッケージで定義されている場合は問題なく共存できます。すべての手順がスタンドアロンではなく、パッケージの一部として存在するという強い議論があります。

于 2013-03-15T16:57:40.090 に答える
0

注意事項:

  1. 名前が付けられたプロシージャPROC1がスキーマに存在する場合、他のプロシージャ/関数にPROC1スキーマ内の名前を付けることはできません。ただし、同じ名前のパッケージを作成でき、その中に name の関数/プロシージャを作成できますPROC1

  2. PROC1他のユーザーのスキーマで名前が付けられたパブリック シノニムがありPROC1CALL PROC1、 などを指定すると、他のプロシージャの代わりに独自のプロシージャが呼び出されます。を呼び出すとPROC1、プロシージャではなく、独自のオブジェクトにアクセスします。

  3. プロシージャを呼び出しても変更されません。CREATE OR REPLACE PROCEDURE proc1それを自分のバージョンに置き換えるには、スキーマで使用する必要があります。

于 2013-03-15T16:32:38.870 に答える