ユースケース
以下のような場面で役立つSQLです
- テーブル、表領域、ファンクション、ビュー、などのオブジェクトを作成したときのSQLコマンドを確認したい
- 該当スキーマが保持しているオブジェクトのユーザー定義を一覧で見たい
使い方
以下のSQLを使うことでオブジェクトのDDL一覧を取得することが可能
SELECT DBMS_METADATA.GET_DDL(<'オブジェクトタイプ'>, <オブジェクト名>, <オーナー名>) FROM ALL_OBJECTS
WHERE OBJECT_TYPE = <'オブジェクトタイプ'> AND OWNER = <オーナー名>;
オブジェクトタイプには以下のようなタイプを指定することができる
- TABLESPACE
- TABLE
- FUNCTION
- INDEX
- VIEW
- SYNONYM
- PACKAGE
- PROCEDURE
- など(ほかにもあるかも)
実行例
SET LONG 20000
SELECT DBMS_METADATA.GET_DDL('FUNCTION', OBJECT_NAME, OWNER) FROM ALL_OBJECTS
WHERE OBJECT_TYPE = 'FUNCTION' AND OWNER = 'HELLO';
DBMS_METADATA.GET_DDL('FUNCTION',OBJECT_NAME,OWNER)
--------------------------------------------------------------------------------
CREATE OR REPLACE EDITIONABLE FUNCTION "HELLO"."FUNCTION" return
・・・・・
return;
end;
DBMS_METADATA.GET_DDL('FUNCTION',OBJECT_NAME,OWNER)
--------------------------------------------------------------------------------
CREATE OR REPLACE EDITIONABLE FUNCTION "HELLO"."MYFUNCTION" return
・・・・・
return;
end;
実行例では、HELLOユーザーが保持している関数のDDL文一覧を取得している
DDL文が途中で切れる?
DDL文が途中までしか出力されない場合、あらかじめ以下を実行しておこう
SET LONG 20000
-
DBMS_METADATA
docs.oracle.com