sqlplusを使ってpackageのソースを取得する
packageを更新するときに、バックアップ作業で必要になったので。
-- backup.sql spool foo_package.sql column TEXT FORMAT a4000 set linesize 4000 set pagesize 0 set head off set feed off select text from user_source where name = 'FOO' and type = 'PACKAGE' order by line; spool off quit
上記のようなSQLファイルを作成し、以下の方法で実行する。
$ sqlplus scott/tiger @backup.sql
- textは、varchar2(4000)なので、一行で出力するようcolumnを指定する。
- pagesizeを0にすると、カラム名などが全く表示されなくなる。
- nameはパッケージ名、プロシージャ名、ファンクション名などを指定する。
- typeは対象の種類。'PACKAGE', 'PACKAGE BODY', 'FUNCTION', 'PROCEDURE'など
- 行数を昇順でソート。
あとは、foo_package.sqlの各行の末尾にある空白を削除する。