7

11G データベースがあります。特定のテーブルを使用しているかどうかを確認するために、いくつかのストアド プロシージャを調べる必要があります。(フロントエンド SP とバックエンド SP の両方) 私はデータベースに完全にアクセスでき、TFS に保存されているプロジェクトのすべての個々の SP のコピーも持っています。

この特定のテーブルと対話するすべての SP のリストを生成する方法が必要です。これらを検索する方法がわかりません。このデータを取得する最も論理的な方法をアドバイスできる人はいますか?

ありがとう。

4

5 に答える 5

19

table私がこれを正しく理解していれば、すべてのストアド プロシージャで a の出現を検索しようとしています。その場合、次のクエリを使用できます。

SPスキーマでの出現を検索する場合

SELECT * FROM user_source WHERE text LIKE '%tab_name%';

SPすべてのスキーマでの出現を検索する場合

SELECT * FROM all_source WHERE text LIKE '%tab_name%';
于 2013-02-11T13:01:45.050 に答える
5

PL/SQL には、pl/sql オブジェクトの再コンパイルが必要な変更とそうでない変更があります。最初のものを見るには、ALL_DEPENDENCIESビューがあります。または、必要に応じて DBA_ 。

すべての pl/sql コードでテーブル名が表示される場所を確認したいだけの場合は、テーブルへの変更に再コンパイルが必要かどうかに関係なく、ALL_SOURCEupper と % を使用できますが、時間がかかる場合があります。

于 2013-02-11T13:05:32.593 に答える
3

テーブル(または他のオブジェクト)を参照し、「参照元」を表示して、テーブルを参照するすべてのオブジェクトを表示できる PLSQL Developer を使用します。それはそれが得られるのと同じくらい簡単です。他のツールにも同様の機能があると想像できます。

この事前に解析された情報が Oracle ですぐに利用できるかどうかはわかりませんが、これらのツールは非常に高速に動作するように見えるので、そうであると想像できます。

この情報はAll_DEPENDENCIES、これらのツールがおそらく使用するビューで利用できます。

ストアド プロシージャのソースは、データベース全体の構造が格納されているUSER_SOURCE(または) ビューで見つけることができます。ALL_SOURCEそれでも、そこからコードを取得して解析するのは非常に面倒です。

于 2013-02-11T12:59:49.683 に答える