首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL*Plus 完美輸出 Excel/HTML 技巧:雙腳本分離 SPOOL 與 MARKUP HTML 實現無冗餘報表

     編輯:Oracle 資料庫相關知識

雙腳本架構

分離「環境設置」與「業務查詢」,避免 SPOOL 記錄 SET 命令、連接信息等冗餘內容。

1. 主腳本 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
  • MARKUP HTML ON:生成 HTML 表格標籤,Excel 可直接打開 .xls。
  • ENTMAP ON:特殊字符 HTML 實體編碼。
  • PREFORMAT OFF:不使用 <PRE> 標籤,輸出緊湊表格。

2. 功能腳本 get_tables.sql

SELECT owner, table_name, tablespace_name, blocks, last_analyzed
FROM all_tables
ORDER BY 1,2;

純查詢,無任何 SET 命令。

3. 執行與驗證

sqlplus "/ as sysdba" @main
ls -l tables.xls
# -rw-r--r-- 1 oracle dba 69539 Apr 25 10:30 tables.xls

生成文件可直接雙擊用 Excel 打開,或瀏覽器查看 HTML 表格。

進階技巧

  • CSV 輸出:SET MARKUP CSV ON (12c+) 或手動 SELECT col1 || ',' || col2 ...。
  • 自定義 HTML 樣式:SET MARKUP HTML ON HEAD ''。
  • 動態文件名:SPOOL report_&_DATE._&_TIME..xls (需 SET TERM OFF 後用腳本變量拼接)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved