首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

SQL*Plus 實戰指南:腳本執行、輸出格式化、報表生成與自動化

     編輯:Oracle 資料庫基礎

核心命令速查

命令用途範例
@ / START執行腳本檔@build_schema.sql
EDIT編輯緩衝區 SQLEDIT
/重執行緩衝區 SQL/
SPOOL輸出導向檔案SPOOL report.lst / SPOOL OFF
DESC顯示表結構DESC employees
COLUMN (COL)格式化欄位顯示COL salary FORMAT $99,999
BREAK分組抑制重複值BREAK ON deptno SKIP 1
COMPUTE分組統計COMPUTE SUM OF sal ON deptno
SET環境設定SET LINESIZE 200 PAGESIZE 50
SHOW顯示設定SHOW ALL
DEFINE定義變數DEFINE dept=10
ACCEPT互動輸入變數ACCEPT d PROMPT 'Dept: '

COLUMN 格式化深度應用

標題與對齊

COL ename HEADING 'Employee|Name' JUSTIFY CENTER
COL sal   HEADING 'Monthly|Salary'  JUSTIFY RIGHT

數值格式

COL sal FORMAT $99,999.99
COL bonus FORMAT 999,990.00
COL pct   FORMAT 99.99

NULL 顯示

COL comm NULL ''

長文字換行

COL notes FORMAT A30 WRAPPED
COL notes FORMAT A30 WORD_WRAPPED
COL notes FORMAT A30 TRUNCATED

條件格式 (12c+)

COL status FOR A10
COL status CLEAR

報表生成實戰範本

SET ECHO OFF FEEDBACK OFF VERIFY OFF HEADING ON
SET LINESIZE 200 PAGESIZE 60 TRIMSPOOL ON
SET UNDERLINE =

COL deptno HEADING 'Dept' FORMAT 999
COL dname  HEADING 'Department' FORMAT A20
COL emp_cnt HEADING 'Employees' FORMAT 9,999
COL avg_sal HEADING 'Avg Salary' FORMAT $99,999.99

BREAK ON REPORT
COMPUTE SUM LABEL 'TOTAL' OF emp_cnt ON REPORT
COMPUTE AVG LABEL 'AVG'    OF avg_sal ON REPORT

SPOOL dept_summary.lst

SELECT d.deptno, d.dname,
       COUNT(e.empno) emp_cnt,
       AVG(e.sal) avg_sal
FROM dept d LEFT JOIN emp e ON d.deptno = e.deptno
GROUP BY d.deptno, d.dname
ORDER BY d.deptno;

SPOOL OFF

HTML/CSV/JSON 輸出 (12c+)

-- HTML
SET MARKUP HTML ON SPOOL ON
SPOOL report.html
SELECT * FROM emp;
SPOOL OFF

-- CSV
SET COLSEP ',' PAGESIZE 0 FEEDBACK OFF
SPOOL data.csv
SELECT * FROM emp;
SPOOL OFF

-- JSON (19c+)
SET FEEDBACK OFF
SELECT JSON_ARRAYAGG(JSON_OBJECT(*)) FROM emp;

變數與腳本參數化

-- 定義
DEFINE target_dept = 10
-- 或互動
ACCEPT target_dept NUMBER PROMPT 'Enter Dept: ' DEFAULT 10

-- 使用
SELECT * FROM emp WHERE deptno = &target_dept;

-- 傳參執行
@query.sql 10 20
-- 腳本內用 &1 &2 接收

自動化最佳實踐

  • glogin.sql / login.sql 設定預設環境
  • 腳本開頭 WHENEVER SQLERROR EXIT SQL.SQLCODE 錯誤即停
  • 使用 SET SERVEROUTPUT ON SIZE UNLIMITED 顯示 DBMS_OUTPUT
  • 長時間腳本加 SET TIMING ON 監控效能
  • 生產環境腳本必須 SPOOL 完整日誌留存
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved