SQL*Plus 作為 Oracle 資料庫的命令列工具,不僅能執行 SQL 查詢,還能透過適當的設定輸出格式化的報表檔案。本文透過實際範例,示範如何利用 SQL*Plus 產生 Excel (.xls) 與 HTML (.htm) 兩種常用格式的輸出檔案,滿足不同使用者的報表需求。
為了避免 Spool 輸出時包含多餘的環境設定資訊,建議採用「主控腳本」與「功能腳本」分離的架構:
[oracle@jumper utl_file]$ more main.sql
set linesize 200
set term off verify off feedback off pagesize 999
set markup html on entmap ON spool on preformat off
spool tables.xls
@get_tables.sql
spool off
exit
關鍵設定說明:
set markup html on:啟用 HTML 標記輸出模式,這也是產生 Excel 相容格式的關鍵entmap ON:將特殊字元轉換為 HTML 實體編碼spool on:確保 Spool 檔案包含 HTML 標記preformat off:不使用預格式化文字,讓表格正常渲染[oracle@jumper utl_file]$ more get_tables.sql
select owner, table_name, tablespace_name, blocks, last_analyzed
from all_tables order by 1, 2;
[oracle@jumper utl_file]$ sqlplus "/ as sysdba" @main
SQL*Plus: Release 9.2.0.4.0 - Production on Mon Apr 25 10:30:11 2005
...
[oracle@jumper utl_file]$ ls -l tables.xls
-rw-r--r-- 1 oracle dba 69539 Apr 25 10:30 tables.xls

只需修改 main.sql 中的 Spool 檔名副檔名,即可輕鬆切換輸出格式:
spool tables.xls — 瀏覽器會以試算表方式開啟spool tables.htm — 直接以網頁形式呈現
此技巧適用於快速產生臨時報表、資料匯出供業務人員分析、或是整合至自動化排程作業中。若需更精美的排版,可在 SQL 查詢中加入 HTML 標籤,或搭配 CSS 樣式表進一步美化 HTML 輸出結果。