Oracle ストアドの内容をファイルに出力する

Oracleのストアドの内容をバッチファイルでsqlplusで出力する方法です。

まずSQLファイルを作成します。
CドライブにCreate.sqlでファイルを作成したとします。
ストアドの出力先はCドライブのOutput.sqlとしています。
set echo off
set heading off
set termout off
set pause off
set pagesize 0
set linesize 1000
set trimspool on
set feedback off

spool C:\Output.sql

SELECT TEXT
FROM   ALL_SOURCE
WHERE  NAME = 'ストアド名'
ORDER BY TYPE, LINE;

spool off;

quit

次にバッチファイルを作成します。
CドライブにCreate.batでファイルを作成したとします。
sqlplusを使用して先ほど作成したsqlファイルを実行します。
sqlplus Oracleユーザー名/パスワード@データベース名 @C:\Create.sql

バッチを実行すると、ストアドの内容が「そのまま」出力されています。

ストアドの内容をCreate文付きで出力するのならコチラ。
set pages 0
set lines 200
set long 65535
set longc 65535
set trimspool on

spool 出力先ファイルパス

SELECT 
 DBMS_METADATA.GET_DDL(OBJ.OBJECT_TYPE, OBJ.OBJECT_NAME, OBJ.OWNER) AS SCRIPT
FROM DBA_OBJECTS OBJ
WHERE
 OBJ.OWNER ='ユーザー名'
 AND OBJ.OBJECT_TYPE ='PACKAGE'
 AND OBJ.OBJECT_NAME ='ストアド名';

spool off;

quit

0 件のコメント: