| 命令 | 用途 | 示例 |
|---|---|---|
| @ / START | 執行腳本文件 | @ script.sql START c:\scripts\init.sql |
| @@ | 腳本中調用同目錄腳本 | 主腳本中 @@ sub.sql |
| EDIT | 調用編輯器修改 Buffer 內 SQL | EDIT |
| / | 重新執行 Buffer 內最近 SQL | / |
| SPOOL file | 開啟輸出重定向 | SPOOL report.lst |
| SPOOL OFF | 關閉重定向並寫入文件 | SPOOL OFF |
| DESC / DESCRIBE | 查看表/視圖結構 | DESC employees |
| SET ... | 設置環境參數 | SET LINESIZE 200 |
| SHOW ... | 顯示參數值 | SHOW PAGESIZE |
| COLUMN (COL) | 格式化列顯示 | 見下文詳解 |
| BREAK / COMPUTE | 報表分組匯總 | BREAK ON deptno SKIP 1 |
| TTITLE / BTITLE | 設置頁首/頁尾標題 | TTITLE CENTER 'Monthly Report' |
| EXIT / QUIT | 退出 SQL*Plus | EXIT |
語法:COL[UMN] [{col|expr}] [option ...]
-- 1. 修改列標題(支持多行)
COL ename HEADING 'Employee|Name'
-- 2. 設置顯示寬度(字符型用 An,數字型用格式模型)
COL ename FORMAT A30
COL sal FORMAT $99,999.00
-- 3. 對齊方式
COL ename JUSTIFY CENTER
COL sal JUSTIFY RIGHT
-- 4. 隱藏列(不輸出但可用於 BREAK/ORDER BY)
COL empno NOPRINT
-- 5. NULL 值顯示替換
COL comm NULL ''
-- 6. 換行控制
COL long_col WRAPPED -- 換行顯示
COL long_col WORD_WRAPPED -- 按單詞換行
COL long_col TRUNCATED -- 截斷
-- 7. 清除格式化
COL ename CLEAR
| 模型 | 輸入 | 顯示 |
|---|---|---|
| 99,999.99 | 1234.5 | 1,234.50 |
| $99,999 | 1234 | $1,234 |
| 99.99% | 0.123 | 12.30% |
| FM999.99 | 12.3 | 12.3 (去除前導空格) |
-- report_dept_sal.sql
SET PAGESIZE 50
SET LINESIZE 120
SET FEEDBACK OFF
SET VERIFY OFF
COL deptno HEADING 'Dept|No' FORMAT 999
COL dname HEADING 'Department|Name' FORMAT A20
COL total_sal HEADING 'Total|Salary' FORMAT $999,999.00
COL avg_sal HEADING 'Average|Salary' FORMAT $99,999.00
BREAK ON REPORT
COMPUTE SUM LABEL 'Grand Total' OF total_sal ON REPORT
COMPUTE AVG LABEL 'Overall Avg' OF avg_sal ON REPORT
TTITLE CENTER 'Department Salary Analysis' SKIP 2
BTITLE CENTER 'Confidential - Page ' FORMAT 999 SQL.PNO
SPOOL dept_sal_report.lst
SELECT d.deptno, d.dname,
SUM(e.sal) total_sal,
AVG(e.sal) avg_sal
FROM emp e, dept d
WHERE e.deptno = d.deptno
GROUP BY d.deptno, d.dname
ORDER BY d.deptno;
SPOOL OFF
-- login.sql 或 glogin.sql 中預設
SET LINESIZE 300
SET PAGESIZE 1000
SET LONG 1000000
SET LONGCHUNKSIZE 1000000
SET TRIMSPOOL ON
SET TRIMOUT ON
SET TAB OFF
SET SQLPROMPT '_USER\'@\'_CONNECT_IDENTIFIER> '
SET TIME ON
SET TIMING ON
DEFINE var = value 定義替換變量ACCEPT var PROMPT 'msg' 交互輸入&var / &&var 引用(&& 定義永久變量)UNDEFINE var 刪除變量VARIABLE bind_var NUMBER 定義綁定變量PRINT bind_var 顯示綁定變量EXEC :bind_var := 100 賦值總結: 精通 SQL*Plus 格式化命令,能將枯燥的查詢結果轉化為可直接匯報的專業文檔。建議將常用 SET、COL、BREAK/COMPUTE 組合封裝為團隊標準報表模板。