2

私は PL/SQL の初心者なので、この質問が正しいかどうかわかりません。Oracle 11g で (スキーマではなく) パッケージの下にあるストアド プロシージャの object_id を見つけようとしています。SP の object_Id を含める必要があると思われる次のシステム テーブル/ビューをクエリしようとしました。

  1. All_procedures
  2. User_obects

All_procedures ビューには、探している SP の名前が含まれていますが、パッケージのオブジェクト ID しか含まれていません。パッケージの下にあるストアド プロシージャの object_id を見つけたい理由は次のとおりです。

  1. 私が話した PL/SQL プログラマーの何人かは、パッケージの下の SP/関数はオブジェクトとは見なされないと言いました。理由を理解したい。

  2. 同じパッケージの下にある他の SP の中で、この SP が参照される数を知りたいです。public_dependency ビューにこのマッピングが含まれていることを願っています。

  3. SP/関数がパッケージの下のオブジェクトとして識別されない場合、特定の SP を参照する SP のリストを取得するにはどうすればよいですか?

別の質問を Stackoverflow に投稿したところ、リンクにたどり着きました。ストアド プロシージャの依存関係をプログラムでどのように識別しますか? . しかし、user_objects にはパッケージの下にストアド プロシージャのエントリがないため、この投稿に記載されているスクリプトは役に立ちませんでした。スキーマの下に SP のみがあります。

4

2 に答える 2

3

私が話した PL/SQL プログラマーの何人かは、パッケージの下の SP/関数はオブジェクトとは見なされないと言いました。理由を理解したい。

Oracle データベースのパッケージは、論理的に関連するオブジェクト (型、変数、プロシージャ、関数など) をグループ化するスキーマ ユニットです。それらは原子単位と見なされ、パッケージ内の一部のプロシージャが別のパッケージ内の別のプロシージャを参照する場合、最初のパッケージ自体が 2 番目のパッケージを参照する状況が発生します。したがって、ここでの最小オブジェクトはパッケージ自体であり、プロシージャや型など、パッケージ内の何かではありません。

同じパッケージの下にある他の SP の中で、この SP が参照される数を知りたいです。public_dependency ビューにこのマッピングが含まれていることを願っています。

どうやって手に入れるかという情報に出くわしたことはありません。参照がパッケージ内にある場合、パッケージは独立したオブジェクトだと思います。

SP/関数がパッケージの下のオブジェクトとして識別されない場合、特定の SP を参照する SP のリストを取得するにはどうすればよいですか?

次のようなソース コードを含むビューを使用する必要があります。user_source/all_source/dba_source

于 2013-05-17T06:29:27.343 に答える
0

最初の点についてはコメントしません。なぜなら、私は Oracle の設計文書と思考プロセスに精通していないからです。パッケージで定義されたプロシージャと関数はパッケージに含まれており、それらに依存しているため、オブジェクト ID が割り当てられていないと思います。

同じパッケージの下にある他の SP の中で、この SP が参照されている数を調べたい

最も簡単な方法は、アクセス権に応じてuser_source/ all_source/を照会することです。dba_sourceこれらのビューにはすべてのソースとコードが含まれているため、適切なフィルターを指定する必要があります。

SP/関数がパッケージの下のオブジェクトとして識別されない場合、特定の SP を参照する SP のリストを取得するにはどうすればよいですか?

上記を参照。

于 2013-05-17T05:52:31.190 に答える