Oracle その他

関数や表などのオブジェクト作成時のSQLを確認する方法|Oracle, SQLPlus, ユーザー定義, GET_DDL

ユースケース

以下のような場面で役立つ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
DBMS_METADATA

docs.oracle.com

この記事が役に立ったという方は
ボタンをポチッとしてくれたら喜びます

-Oracle, その他
-