[Oracle]SQL*Plusで続行確認(続行 or 中断)を挟む方法
複数のSQLをSQLスクリプトファイルにまとめて実行する際に、SQL毎に処理を一旦停止して実行確認を挟みたい
そんな場合、SQLPlusのACCEPTコマンドで対応可能
具体例はこんな感じ
[oracle@rac-x1 ~]$ cat test.sql
select '前処理' ,systimestamp from dual;
ACCEPT A CHAR FORMAT 9 PROMPT 続行する場合はエンター
select '後処理' ,systimestamp from dual;
[oracle@rac-x1 ~]$
これを実行すると、ACCEPTコマンドのところメッセージ「続行する場合はエンター」で処理が止まり入力待ちになる
SQL> @test
'前処理'
---------
SYSTIMESTAMP
---------------------------------------------------------------------------
前処理
22-09-24 01:24:44.306003 +09:00
続行する場合はエンター
ここでエンターを押すと後続処理が流れる
SQL> @test
'前処理'
---------
SYSTIMESTAMP
---------------------------------------------------------------------------
前処理
22-09-24 01:24:44.306003 +09:00
続行する場合はエンター
'後処理'
---------
SYSTIMESTAMP
---------------------------------------------------------------------------
後処理
22-09-24 01:25:46.453308 +09:00
SQL>
止める場合はCtrl +C を入力後 エンター
SQL> @test
'前処理'
---------
SYSTIMESTAMP
---------------------------------------------------------------------------
前処理
22-09-24 01:26:32.398837 +09:00
続行する場合はエンター^C
SQL>
ACCEPTコマンドは本来、ユーザーからの入力を受け付けて変数に格納し、入力内容を後続処理で活用するためのコマンドだが、こんな使い方もできる
set echo on とか事前に打っておけば、コマンド内容も表示されてさらに安心かも
変数の型をCHAR FORMAT 9と意味不明な内容にすることで、Ctrl+Cの打ち間違いで先に進むのを防ぐことができる(あまり効果ないかもしれないけど。。。)
続行する場合はエンターC
SP2-0598: "C"は入力形式 "9"と一致しません。
続行する場合はエンター