mvref.bat
ScriptDir\
mvref.bat
sql\
log\
mvref.log
mvref\
mv毎のログファイル
code:bat
@echo off
setlocal
rem === マテビュー名(第1引数)
set MVNAME=%1
rem === リフレッシュタイプ(第2引数 C:完全、F:高速)
set REFTYP=%2
rem === スクリプトディレクトリを設定
set SCRIPT_PATH=%~dp0
rem === スクリプトファイル名を取得
set SCRIPT_FILE=%~n0
rem === SQLファイル名
set SQLFL=%SCRIPT_FILE%.sql
rem === スキーマ名
set SCMNM1=XXX
set SCMNM2=XXX
rem === 接続文字列
set CONN_STRNG=XXXXXXXX
rem === メッセージを定義(開始、処理結果、エラー、終了)
set Message_START=Logging START.
set Message_Processing=が実行されました
set Message_Error1=にエラーが発生しました
set Message_Error2=を確認してください
set Message_Error3=引数が足りません
set Message_END=Logging END.
rem === ログファイルの生成パスとログファイル名を定義
set LOG_PATH=%SCRIPT_PATH%\log\
set logfile=%LOG_PATH%%SCRIPT_FILE%.log
rem === スプールファイルの生成パスを定義
set SPL_PATH=%LOG_PATH%%SCRIPT_FILE%\
rem === SQLファイルのパスを定義
set SQL_PATH=%SCRIPT_PATH%\sql\
rem === 変数yyyyMMdd,hhmmss
set yyyyMMdd=%date:/=%
set hhmmss=%time::=%
rem === 変数加工&スプールファイル名生成
set hhmmss=%hhmmss:~0,6%
set splfile=%SPL_PATH%%yyyyMMdd%_%hhmmss%_%MVNAME%.log
rem === 開始ログ出力
echo %date:/=-% %time:.=,%0 %Message_START% >> "%logfile%" 2>&1
rem === 引数チェック
if "%2%"=="" (
echo %date:/=-% %time:.=,%0 %Message_Error3% >> "%logfile%" 2>&1
set errorlevel=100
goto :END
)
rem === SQL*Plus起動&スクリプト実行
sqlplus -s %SCMNM1%/<パスワード>@%CONN_STRNG% @%sql_path%%SQLFL% %MVNAME% %REFTYP% %SCMNM2% %splfile%
rem === 処理結果ログ出力
rem === エラーログ出力
if %errorlevel% neq 0 (
echo %date:/=-% %time:.=,%0 %splfile% %Message_Error2% >> "%logfile%" 2>&1 )
:END
rem === 終了ログ出力
echo %date:/=-% %time:.=,%0 ReturnCode=%errorlevel% >> "%logfile%" 2>&1
echo %date:/=-% %time:.=,%0 %Message_END% >> "%logfile%" 2>&1
exit