2017-02-13 8 views
0

私は多数のOracleパッケージを所有しています。私はそれらのパッケージの中でいくつかのよくある問題が見つかる場所のリストを作成できるようにするためのクエリを書いています。特定のOracleパッケージの「パブリック」プロシージャでDDLを取得するにはどうすればよいですか?

私がこれまで

  • を試してみた私は私が私が私ができる知っている私はdba_source
  • を照会することによって、コードの行を見つけることができます知っている私はdba_arguments
  • を照会することにより、パッケージの引数を分離することができます知っていますクエリによってパッケージの仕様に表示される手順を特定する DBA_Procedures

最初の2つの結果セットを一緒に参加させることはできますが、3番目の結果セットに参加するには問題があります。

特定のパッケージの仕様に表示される手順でDDLを取得するにはどうすればよいですか?

+1

彼らはソースファイルであったように他の人がコンパイルにの結果であるのに対し、DBA_SOURCEは、コードの行だけです。基本的にソースをコンパイルしてプロシージャー名と引数を知る必要があるので、それらを結合することには大きな困難があると思います。 –

+1

私はその質問を理解していますか分かりません。あなたが話していることの例を示してください。ありがとうございます。 – OldProgrammer

+0

公開しているもの(パブリック・シノニムやパッケージの仕様のみを参照している場合など)に応じて異なります。一般に、SELECT_CATALOG_ROLEがある場合は、dbms_metadata.get_ddl関数を呼び出すことができます。 –

答えて

1

は、この方法を試してください。

select dbms_metadata.get_ddl ('PACKAGE', 'YOURPACKAGENAME', 'YOURSCHEMA') from dual; 
関連する問題