0

データベースで sql ファイルを実行するバッチ スクリプトを作成しようとしています。スクリプトで SQL クエリの実行結果をログ ファイルに記録したい (>> SQl_LOGS.txt のようなものを使用)。それは問題なく動作しますが、ユーザーが次の SQl を実行し続けたい場合は、ユーザー入力を取得したいと考えています。クエリするかどうか。

一時停止も含めてすべてがログ ファイルにリダイレクトされるため、コンソールに入力を提供できません。

for ループ内で呼び出されるサブルーチン:

:ProcessQuery


(
echo WHENEVER SQLERROR EXIT 1 
echo WHENEVER OSERROR EXIT 1 
echo @%query% XXuser            // This should be sent top a log file

)  | sqlplus XXuser/XXpwdr@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=XX.XX.XX.XX)(Port=XXXX))(CONNECT_DATA=(SID=XXXX))) 


echo error level is : %ERRORLEVEL%

IF %ERRORLEVEL% == 1 ( 
   ECHO WARNING : QUERY %query% EXECUTION ERROR !   // these 3 lines should come up in the
                                                    // console      
   echo PLEASE FIX THE ERROR AND THEN HIT ENTER. 
   pause                        

) ELSE (
   echo %str% %query%
   ECHO  INFO : QUERY %query% EXECUTION SUCCESSFUL ! 
)

同じバッチ スクリプトをログ ファイルに出力し、コンソールからユーザー入力を取得することはできますか? これを達成する方法はありますか?

4

1 に答える 1

1

スクリプトの特定の部分だけをログに記録する場合は、スクリプトの特定の行で >> SQL_LOGS.txt を使用します (スクリプトの呼び出しで使用するのではなく)。

ユーザーに特定の応答を促す方法については、次の記事を簡単に読んでください: http://www.quepublishing.com/articles/article.aspx?p=1154761&seqNum=12

編集 - これは、上記のリンクに触発されたバッチ スクリプトであり、目標を例示するのに役立ちます。

@echo off
echo This is an example of accepting user input and writing some output to a log.
:again 
   set /p answer=Do you want to run a sql script (Y/N)?
   if /i "%answer:~,1%" EQU "Y" goto logit
   if /i "%answer:~,1%" EQU "N" exit /b
   echo Please type Y for Yes or N for No
   goto again
:logit
   echo sql script goes here. this command's response is sent to the log. >> test.log
   goto again
于 2013-08-05T20:32:20.893 に答える