分離「環境設置」與「業務查詢」,避免 SPOOL 記錄 SET 命令、連接信息等冗餘內容。
main.sqlSET 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> 標籤,輸出緊湊表格。get_tables.sqlSELECT owner, table_name, tablespace_name, blocks, last_analyzed
FROM all_tables
ORDER BY 1,2;
純查詢,無任何 SET 命令。
sqlplus "/ as sysdba" @main
ls -l tables.xls
# -rw-r--r-- 1 oracle dba 69539 Apr 25 10:30 tables.xls
生成文件可直接雙擊用 Excel 打開,或瀏覽器查看 HTML 表格。
SET MARKUP CSV ON (12c+) 或手動 SELECT col1 || ',' || col2 ...。SET MARKUP HTML ON HEAD ''。SPOOL report_&_DATE._&_TIME..xls (需 SET TERM OFF 後用腳本變量拼接)。