dbms_metadata
から ドキュメント:
非特権ユーザーが他の誰かのスキーマ内のオブジェクトへの何らかの形式のアクセスを許可されている場合、そのユーザーはメタデータAPIを介して許可仕様を取得できますが、オブジェクトの実際のメタデータは取得できません。
したがって、特権ユーザーとして接続していない限り、別のユーザーのオブジェクトのDDLを表示することはできません。 SYS
として接続する必要があります 、またはSELECT_CATALOG_ROLE
があります XTのオブジェクト定義を取得できるようにするためにユーザーに付与された役割。
その役割があっても:
ストアドプロシージャ、関数、およびdefiners-rightsパッケージでは、ロール(SELECT_CATALOG_ROLEなど)は無効になっています。したがって、このようなPL / SQLプログラムは、独自のスキーマ内のオブジェクトのメタデータのみをフェッチできます。 (呼び出し側がSELECT_CATALOG_ROLEを所有していることに基づいて)別のスキーマのオブジェクトのメタデータをフェッチするPL / SQLプログラムを作成する場合は、プログラムの呼び出し側権限を作成する必要があります。
dbms_metadata
を呼び出している場合 匿名のPL/SQLブロックからではありませんが、プロシージャから呼び出す場合は、AUTHID
を含める必要があります。 プロシージャ宣言の句、AUTHID CURRENT_USER
を追加 。