SET 命令:控制 SQL*Plus 運行環境
| 命令 | 默認值 | 作用 | 推薦設置 |
| SET TIMING ON | OFF | 顯示每條語句執行耗時 | ON |
| SET AUTOTRACE ON | OFF | 顯示執行計劃+統計 | TRACEONLY EXPLAIN |
| SET TRIMOUT ON | OFF | 去除標準輸出行尾空格 | ON |
| SET TRIMSPOOL ON | OFF | 去除 SPOOL 文件行尾空格 | ON |
| SET ECHO OFF | ON | 不顯示腳本內部命令 | OFF |
| SET FEEDBACK ON | ON | 顯示「已選擇 N 行」 | ON / 6 (僅>6行顯示) |
| SET COLSEP '|' | ' ' | 列分隔符,利於導出解析 | '|' 或 ',' |
| SET HEADING OFF | ON | 隱藏列標題 | 導出數據時 OFF |
| SET PAGESIZE 0 | 24 | 0=不分頁,避免重複標題 | 0 (腳本) / 5000 (交互) |
| SET LINESIZE 200 | 80 | 單行字符寬度,防換行 | 200-32767 |
| SET NUMWIDTH 12 | 10 | 數值列默認寬度 | 12-18 |
| SET TERMOUT OFF | ON | 不顯示腳本輸出結果 | SPOOL 期間 OFF |
| SET SERVEROUTPUT ON | OFF | 啟用 DBMS_OUTPUT 顯示 | ON SIZE 1000000 |
| SET VERIFY OFF | ON | 關閉新舊值變量替換提示 | OFF |
| SET LONG 2000000000 | 80 | LONG/CLOB 顯示長度 | 大數值 |
| SET LONGCHUNKSIZE 1000000 | 80 | LONG 分塊輸出大小 | 大數值 |
COLUMN (COL) 命令:精準控制列顯示格式
COL[UMN] [{col|expr} [option ...]]
option: ALIAS | CLEAR | FORMAT | HEADING | JUSTIFY | LIKE | NEW_VALUE | NOPRINT | NULL | WRAPPED | WORD_WRAPPED | TRUNCATED
常用 FORMAT 格式元素
| 類型 | 格式串 | 示例輸入 | 示例輸出 |
| 數值 | 99,999.99 | 1234.5 | 1,234.50 |
| 數值 | $99,990.90 | 1234.5 | $1,234.50 |
| 字符 | A20 | 'Hello World' | Hello World |
| 日期 | 無 (用 TO_CHAR) | - | - |
實戰範例
-- 1. 給 SAL 列別名並格式化為貨幣
COLUMN sal ALIAS "Monthly Salary" FORMAT $99,990.90
-- 2. 截斷過長字符列,避免換行破壞對齊
COLUMN long_desc FORMAT A30 TRUNCATED
-- 3. 空值顯示為 (null)
COLUMN comm NULL '(null)'
-- 4. 將查詢結果存入變量,供後續腳本使用 (NEW_VALUE)
COLUMN max_sal NEW_VALUE v_max_sal NOPRINT
SELECT MAX(sal) max_sal FROM emp;
-- 後續可用 &v_max_sal 引用
-- 5. 清除列格式化
COLUMN sal CLEAR
黃金組合:生產環境導出腳本模板
SET ECHO OFF
SET FEEDBACK OFF
SET HEADING OFF
SET PAGESIZE 0
SET LINESIZE 32767
SET TRIMSPOOL ON
SET COLSEP ','
SET TERMOUT OFF
SET NUMWIDTH 20
COLUMN empno FORMAT 999999
COLUMN ename FORMAT A20
COLUMN sal FORMAT 999990.99
SPOOL emp_export.csv
SELECT empno, ename, sal FROM emp ORDER BY empno;
SPOOL OFF
輸出純 CSV,無標題、無分頁、無多餘空格,直接可導入 Excel/ETL。