PL/SQLソース反映コマンド取得

-- Index --

・Top

・Softwares

▼親父の独り言集

▼Oracleデータベースに対する独り言集

・ご利用の前に
・CSVデータ出力バッチ作成
・SQLLoader実行バッチ作成(制御ファイルもね)
・主キー作成・削除コマンド取得
・実行中セッションKILLコマンド取得
→PL/SQLソース反映コマンド取得
・テーブル生成コマンド取得
・ビュー生成コマンド取得
・マテリアライズド・ビュー生成コマンド取得
・マテリアライズド・ビューログ生成コマンド取得
・順序(シーケンス)生成コマンド取得
・データベース・リンク生成コマンド取得
・シノニム生成コマンド取得
・サブクエリーのアクセス順指定
・グループ単位の通し番号とグループ内の連番

・VB.NETやC#に対する独り言集

・我が家の家電事情について

ひとりごと

ソースがDBから取得できるのって、いいんだか悪いんだか・・・。たまに構成管理に登録するの忘れるのよね。危険

準備するもの

まず、以下のスクリプトをコピーして、"sourceexport.sql"というファイルを作成します。

------------------------------------------------------------------
-- Copyright(c) 2015-2016 pakkin. All Right Reserved.
-- [改訂履歴]
-- 2015.09.15 作成
-- 2016.07.19 importバッチの出力メッセージを調整
-- 
-- [実行方法]
-- 1)このテキストを、"sourceexport.sql"として作成します。
-- 2)作成したフォルダ上で、コマンドプロンプトを起動し、以下のコマンドを実行します。
--   sqlplus -s user/password@servicename @sourceexport.sql
-- 3)同一フォルダ上に、"sourceimport.sql"が作成されます。ソースを反映したい場合、以下のコマンドを実行します。
--   sqlplus -s user/password@servicename @sourceimport.sql
-- 4)コンパイル結果が"sourceimport.log"として出力されます。
------------------------------------------------------------------
set escape    ?
set linesize  4000
set pagesize  0
set term      off
set head      off
set feed      off
set trim      on
set trimspool on
set verify    off
------------------------------------------------------------------
-- __sourceexport1.sql
------------------------------------------------------------------
spool  __sourceexport1.sql
prompt spool  './?&2/?&1..sql'
prompt select decode(src.LINE,1,'CREATE OR REPLACE ') || src.TEXT
prompt   from USER_SOURCE src
prompt  where src.NAME = '?&?&1'
prompt    and src.TYPE = '?&?&2'
prompt  order by src.LINE
prompt /
prompt prompt /
prompt prompt show errors
prompt spool  off
spool  off
------------------------------------------------------------------
-- __sourceexport2.sql
------------------------------------------------------------------
spool  __sourceexport2.sql
select DISTINCT '$MKDIR ".\' || src.TYPE || '" > __sourceexport1.log 2> __sourceexport2.log
spool sourceimport.sql APPEND
prompt prompt Compiling... ./' || src.TYPE || '/' || src.NAME || '.sql
prompt $ECHO Compiling... ./' || src.TYPE || '/' || src.NAME || '.sql
prompt @"./' || src.TYPE || '/' || src.NAME || '.sql"
prompt prompt
spool off
?@__sourceexport1.sql ' || src.NAME || ' "' || src.TYPE || '"
?$SET  /p  X=OUTPUT:' || rpad(src.TYPE,15) || rpad(src.NAME,30) || ' ステップ数:< nul
?$TYPE ".\' || src.TYPE || '\' || src.NAME || '.sql" | FIND /C /V ""' as cmdline
  from USER_SOURCE src
 order by 1
/
spool off
------------------------------------------------------------------
-- sourceimport.sql
------------------------------------------------------------------
spool sourceimport.sql
prompt spool sourceimport.log
prompt set linesize  300
prompt set pagesize  0
prompt set term      off
prompt set head      off
prompt set feed      off
prompt set trim      on
prompt set trimspool on
prompt set verify    off
spool off
@__sourceexport2.sql
spool sourceimport.sql APPEND
prompt spool off
prompt $echo PL/SQLソースをコンパイルしました。
prompt EXIT
spool off
$del  __sourceexport*.*
$echo スクリプトを生成しました。
exit

実行(ソース取得)

スクリプトの存在するフォルダ上でコマンドプロンプトを開き、以下のコマンドを実行します。

sqlplus -s user/password@servicename @sourceexport.sql

実行時に生成されるサブフォルダ例(オブジェクトが存在する場合)
FUNCTION FUNCTIONのPL/SQLソースを生成
PROCEDURE PROCEDUREのPL/SQLソースを生成
PACKAGE PACKAGEのPL/SQLソースを生成
PACKAGE BODY PACKAGE BODYのPL/SQLソースを生成
実行時に生成されるスクリプト
sourceimport.sql 生成されたPL/SQLソースを反映するコマンドを生成

実行(反映)

スクリプトの存在するフォルダ上でコマンドプロンプトを開き、以下のコマンドを実行します。

sqlplus -s user/password@servicename @sourceimport.sql

実行時に生成されるログ
sourceimport.log 反映コマンドを実行時のエラー情報を格納


Copyright(c) 2014-2022 pakkin. All Rights Reserved.