SQL*Plus 會話行為由 SET 命令控制,涵蓋輸出格式、回饋、分頁、緩衝區等數十項參數。本文整理最常用的 11 類設定,附語法、預設值、實戰範例與 SHOW ALL 輸出解讀。
| 命令 | 語法 | 預設值 | 說明與範例 |
|---|---|---|---|
| ARRAYSIZE | SET ARRAY[SIZE] {15|n} | 15 | 單次 Fetch 筆數(1~5000)。長欄位查詢宜調小減少記憶體。 |
| AUTOCOMMIT | SET AUTO[COMMIT] {OFF|ON|IMM|n} | OFF | ON/IMM:每句自動提交;n:每 n 句提交;OFF:手動 COMMIT。 |
| LINESIZE | SET LIN[ESIZE] {80|n} | 80 | 輸出行寬(字元數),最大 32767。寬表查詢建議 SET LINESIZE 2000。 |
| LONG | SET LONG {80|n} | 80 | LONG/CLOB 欄位顯示字元數(1~2G)。SET LONG 10000 避免截斷。 |
| PAGESIZE | SET PAGES[IZE] {14|n} | 14 | 每頁列數(含標題)。SET PAGESIZE 0 關閉分頁(適合腳本輸出)。 |
| PAUSE | SET PAUSE {ON|OFF} | OFF | ON 時每頁結束暫停,需按 Enter 繼續。SET PAUSE ON 除錯用。 |
| SPACE | SET SPA[CE] {1|n} | 1 | 欄位間空格數(0~10)。通常保持預設。 |
| TERMOUT | SET TERMOUT {ON|OFF} | ON | OFF 關閉螢幕輸出(搭配 SPOOL 輸出檔案加速)。 |
| ECHO | SET ECHO {ON|OFF} | OFF | ON 顯示執行的命令(@腳本時)。受 TERMOUT 影響。 |
| TRANSACTION | SET TRANSACTION {READ ONLY|USE ROLLBACK SEGMENT seg} | - | READ ONLY 保證讀一致性;指定大 Rollback Segment 供大量 DML。 |
| TRIMSPOOL | SET TRIMSPOOL {ON|OFF} | OFF | ON 移除 SPOOL 輸出每行尾部空白,檔案更緊湊。 |
SET HEADING OFF
SET FEEDBACK OFF
SET ECHO OFF
SET PAGESIZE 0
SET LINESIZE 32767
SET TRIMSPOOL ON
SET COLSEP ','
SPOOL export.csv
SELECT * FROM employees;
SPOOL OFF
輸入 SHOW ALL 可列出所有參數目前值。關鍵參數快速檢查:
SQL> SHOW ALL
...
linesize 80
long 80
pagesize 14
pause OFF
termout ON
echo OFF
...
login.sql(或 glogin.sql)預設設定常用參數(LINESIZE 2000, PAGESIZE 1000, LONG 100000 等)。SET PAUSE ON 逐頁檢視;自動化腳本用 SET PAGESIZE 0 FEEDBACK OFF HEADING OFF。TERMOUT OFF + SPOOL 導出大量資料時顯著提升速度(省去終端渲染)。AUTOCOMMIT ON 僅適合測試環境,生產環境務必手動控制交易。