首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

SQL*Plus 客製化編輯器指令:設定 vi 編輯與檔案操作實戰

     編輯:Oracle 資料庫基礎

為什麼要在 SQL*Plus 設定外部編輯器?

SQL*Plus 內建的緩衝區編輯功能(LIST、CHANGE、INPUT、DEL)僅適合簡單單行修改。撰寫複雜 PL/SQL 區塊、長查詢或需版本控管時,外部編輯器(如 vi、vim、notepad++)提供語法高亮、搜尋取代、撤銷重做等專業功能,大幅提升開發效率。

設定預設編輯器為 vi

SQL> DEFINE _EDITOR = 'vi'

永久生效: 將上述指令加入 $ORACLE_HOME/sqlplus/admin/glogin.sql(全域)或 ~/login.sql(使用者層級)。

完整實戰流程:從查詢到編輯、儲存、執行

步驟 1:撰寫並格式化查詢

SQL> COL file_name FOR A45
SQL> COL tablespace_name FOR A10 HEADING 'TBS_NAME'
SQL> COL current_scn FOR 999999999999
SQL> SELECT a.file_name, a.tablespace_name, b.current_scn
  FROM dba_data_files a, v$database b
  WHERE a.tablespace_name = 'USERS';

步驟 2:儲存緩衝區 SQL 至檔案

SQL> SAVE me.sql
Created file me.sql

步驟 3:檢視檔案內容

SQL> HOST cat me.sql
SELECT a.file_name, a.tablespace_name, b.current_scn
FROM dba_data_files a, v$database b
WHERE a.tablespace_name = 'USERS'

步驟 4:啟動 vi 編輯器修改

SQL> EDIT me.sql

此時進入 vi 介面,可進行:

  • 多行編輯、複製貼上
  • 語法高亮(若用 vim)
  • 搜尋取代 :%s/USERS/SYSAUX/g
  • 儲存離開 :wq

步驟 5:載入修改後的檔案並執行

SQL> GET me.sql
SQL> /

或直接 @me.sql 執行腳本檔。

進階技巧:編輯最近執行的 SQL

SQL> EDIT

無參數 EDIT 會將「最近一次執行的 SQL」載入編輯器,修改存檔後自動回寫緩衝區,輸入 / 即可執行新版本。

Windows 環境設定 Notepad++ 範例

SQL> DEFINE _EDITOR = 'notepad++ -multiInst -nosession'

-multiInst 允許多實例,-nosession 不載入上次工作階段,適合 SQL*Plus 呼叫。

常見問題與解決

問題原因解決
SP2-0678: Editor not found編輯器路徑不在 PATH 中設定完整路徑:DEFINE _EDITOR = 'C:\Program Files\Notepad++\notepad++.exe'
vi 開啟後無法輸入未進入插入模式按 i 進入插入模式,Esc 返回正常模式
編輯後執行仍是舊 SQL未重新載入緩衝區執行 GET filename 或再次 EDIT

最佳實務建議

  • 專案開發建議:將常用查詢存為 .sql 檔,納入 Git 版控
  • 複雜 PL/SQL 直接用 IDE(SQL Developer、VS Code + Oracle Extension)開發,再貼回 SQL*Plus 執行
  • 生產環境變更前,先 SAVE 備份原 SQL,便於回滾
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved