Oracle SQL*Plus のラインエディット機能

以前の日記SQL*Plusのラインエディット機能のことを少し書きましたので便利な利用例を整理してみます。

  • 例えばわざと誤ったSQLを実行
SQL> select systemdate
  2  from duel;
from duel
     *
ERROR at line 2:
ORA-00942: table or view does not exist

『duel』なんて言うテーブルはないと怒られています。

  • SQL文のリストを表示
SQL> l
  1  select systemdate
  2* from duel

本当は『list』コマンドだけど、『l』で省略可能です。

  • 誤ったテーブル名を正しく置換し、リストを表示
SQL> c/duel/dual/
  2* from dual
SQL> l
  1  select systemdate
  2* from dual

正しい『dual』テーブルに変更されました。

  • 再実行してみますが、まだ誤りが残っているのでエラーが発生
SQL> run
  1  select systemdate
  2* from dual
select systemdate
       *
ERROR at line 1:
ORA-00904: "SYSTEMDATE": invalid identifier

『systemdate』なんて言うカラムはないと怒られています。

  • リストを確認すると2行目が編集対象なので1行目に変更
SQL> l
  1  select systemdate
  2* from dual
SQL> 1
  1* select systemdate

行番号のみ入力するとその行が編集対象に替わり、行番号の後に『*』が移動します。

  • 誤ったカラム名を正しく置換し、リストを表示後、再実行
SQL> c/systemdate/sysdate/
  1* select sysdate
SQL> l
  1  select sysdate
  2* from dual
SQL> run
  1  select sysdate
  2* from dual

SYSDATE
              • -
07-07-26

正しく実行されました。

ちなみに、『run』コマンドは『r』で省略可能です。

SQL> r
  1  select sysdate
  2* from dual

SYSDATE
              • -
07-07-26

こんな感じでちょっとしたSQL文の編集には凄い便利だったりします〜。(^o^)/