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

SQL*Plus 命令大全:從腳本執行到報表格式化的實戰技巧

     編輯:Oracle 資料庫基礎

核心區別:SQL*Plus 命令 vs SQL 語句

  • SQL 語句:DML/DDL/DCL,存入 SQL Buffer,可編輯、重跑(/)
  • SQL*Plus 命令:格式化輸出、環境設置、文件操作,不入 Buffer,不以分號結尾

高頻命令速查表

命令用途示例
@ / START執行腳本文件@ script.sql START c:\scripts\init.sql
@@腳本中調用同目錄腳本主腳本中 @@ sub.sql
EDIT調用編輯器修改 Buffer 內 SQLEDIT
/重新執行 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*PlusEXIT

COLUMN 命令深度解析:打造專業報表輸出

語法: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.991234.51,234.50
$99,9991234$1,234
99.99%0.12312.30%
FM999.9912.312.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 組合封裝為團隊標準報表模板。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved