SQL*Plus 維護一個「最近執行的 SQL 緩衝區」,每行附帶行號。最後一行標示 * 代表「當前行」。所有編輯指令針對此緩衝區操作,不影響資料庫物件。
| 指令 | 縮寫 | 功能 | 範例 |
|---|---|---|---|
LIST [n] | L [n] | 顯示緩衝區全部或第 n 行 | L 2 |
CHANGE /old/new/ | C /old/new/ | 當前行字串取代 | C /SYSAUX/USERS/ |
DEL [n|m n|n *|n LAST] | DEL | 刪除指定行 | DEL 2 3 |
INPUT [text] | I [text] | 當前行之後插入新行 | I , file_name |
APPEND text | A text | 當前行尾端附加文字 | A WHERE rownum < 10 |
SQL> SELECT file_name
2 FROM dba_data_files
3 WHERE tablespace_name = 'SYSAUX';
FILE_NAME
------------------------------------------------------------
+DATAGRP/db/datafile/sysaux.257.686941969
SQL> LIST
1 SELECT file_name
2* FROM dba_data_files WHERE tablespace_name = 'SYSAUX'
行 2 標示 * 為當前行。
SQL> 1
1* SELECT file_name
SQL> CHANGE /file_name/tablespace_name/
1* SELECT tablespace_name
SQL> LIST
1 SELECT tablespace_name
2* FROM dba_data_files WHERE tablespace_name = 'SYSAUX'
SQL> /
TABLESPACE_NAME
------------------------------
SYSAUX
SQL> DEL -- 刪除當前行(最後一行)
SQL> DEL 2 -- 刪除第 2 行
SQL> DEL 2 5 -- 刪除第 2、5 行(空格分隔)
SQL> DEL 3 LAST -- 刪除第 3 行至最後一行
SQL> LIST
1 SELECT tablespace_name
2* FROM dba_data_files WHERE tablespace_name = 'SYSAUX'
SQL> 1
1* SELECT tablespace_name
SQL> INPUT , file_name
SQL> LIST
1 SELECT tablespace_name
2 , file_name
3* FROM dba_data_files WHERE tablespace_name = 'SYSAUX'
SQL> /
TABLESPACE_NAME FILE_NAME
----------------- --------------------------------------------
SYSAUX +DATAGRP/db/datafile/sysaux.257.686941969
CHANGE 僅作用於當前行。需修改多行時:
SQL> L 1
1* SELECT col1
SQL> C /col1/col_new/
SQL> L 2
2* FROM table_old
SQL> C /table_old/table_new/
SQL> SAVE query_v1.sql -- 存檔
SQL> EDIT -- 外部編輯器修改
SQL> GET query_v1.sql -- 載入修改版
SQL> / -- 執行
SQL> CLEAR BUFFER
DEFINE _EDITOR 使用外部編輯器、SQL Developer、VS CodeL 看、C 改、D 刪、I 增、A 尾、/ 執、SAVE 存