sql >> データベース >  >> RDS >> Oracle

dbms_metadata.get_ddlが機能しない

    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を追加 。



    1. 警告:mysql_fetch_array()は、パラメーター1がリソースであると想定しています。ブール値は次のように指定されます。

    2. 存在する/存在しない:'1を選択'vs'フィールドを選択'

    3. SQLServerのテキスト型とvarcharデータ型

    4. 整数をチェックするSQLLIKE条件?