[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"と一致しません。
続行する場合はエンター

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

コメントする