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

SQL*Plus 命令完整參考:腳本執行、格式化輸出、報表產製實務

     編輯:關於SqlServer

SQL*Plus 定位

Oracle 官方命令列工具,支援 SQL 陳述式 (DML/DDL/DCL) 與 SQL*Plus 命令 兩大類指令。前者操作資料、後者控制輸出格式、環境設定、腳本流程,是 DBA 與開發者產出報表、自動化維護的核心工具。

核心命令分類速查

腳本執行與編輯

命令功能範例
@file.sql / START file.sql執行 SQL 腳本檔@backup.sql
EDIT以系統編輯器修改緩衝區最後一條 SQLEDIT
/重新執行緩衝區最後一條 SQL/
GET file / SAVE file載入/儲存腳本至緩衝區GET report.sql

輸出導向與報表格式化

命令功能關鍵選項
SPOOL file / SPOOL OFF將螢幕輸出導向檔案 / 關閉SPOOL report.lst
SET PAGESIZE n每頁列數 (0=不分頁)SET PAGESIZE 50
SET LINESIZE n每行字元寬度SET LINESIZE 200
SET FEEDBACK ON/OFF顯示/隱藏「n rows selected」SET FEEDBACK OFF
SET HEADING ON/OFF顯示/隱藏欄位標題SET HEADING OFF
SET ECHO ON/OFF腳本執行時是否顯示指令本身SET ECHO OFF
SET TRIMSPOOL ON移除 SPOOL 輸出尾部空白SET TRIMSPOOL ON

欄位格式化 (COLUMN / COL)

COLUMN column_name [ALIAS alias] [FORMAT fmt] [HEADING 'text'] [JUSTIFY L|C|R] [WRAPPED|WRAPPED_WORD|TRUNCATED] [NULL 'text'] [NOPRINT|PRINT]

常用範例

-- 修改欄位標題(支援多行,用 | 分隔)
COL ename HEADING 'Employee|Name'

-- 數值格式:千分位、小數 2 位
COL sal FORMAT '99,999.99'

-- 日期格式
COL hiredate FORMAT A12  -- 寬度 12 字元
-- 或搭配 SQL: TO_CHAR(hiredate, 'YYYY-MM-DD')

-- 長字串截斷/換行
COL long_text FORMAT A30 TRUNCATED
COL long_text FORMAT A30 WRAPPED

-- 隱藏欄位 (用於排序/運算不顯示)
COL hidden_col NOPRINT

-- NULL 顯示為指定文字
COL comm NULL '(null)'

斷點報表 (BREAK / COMPUTE)

-- 依部門分組,顯示小計
BREAK ON deptno SKIP 1
COMPUTE SUM LABEL 'Dept Total' OF sal ON deptno
COMPUTE SUM LABEL 'Grand Total' OF sal ON REPORT

SELECT deptno, ename, sal FROM emp ORDER BY deptno, ename;

環境變數與替換變數

  • DEFINE var = value / UNDEFINE var:定義/移除替換變數。
  • &var / &&var:執行時提示輸入 / 重複使用同一值。
  • SET DEFINE OFF:關閉替換變數解析 (避免 & 被誤判)。

資料庫物件資訊查詢

命令功能
DESC[RIBE] table_view顯示資料表/視圖結構 (欄位、型別、可空性)
SHOW PARAMETERS顯示初始化參數
SHOW USER顯示目前連線使用者
SHOW ERRORS [proc|func|pkg|trig]顯示編譯錯誤

實務報表腳本範本

SET ECHO OFF FEEDBACK OFF HEADING ON PAGESIZE 60 LINESIZE 180 TRIMSPOOL ON
SET COLSEP ' | '

COL empno FORMAT 9999 HEADING 'Emp No'
COL ename FORMAT A15 HEADING 'Name'
COL job   FORMAT A12 HEADING 'Job'
COL sal   FORMAT '99,999.99' HEADING 'Salary'
COL comm  FORMAT '99,999.99' HEADING 'Comm' NULL '(none)'

BREAK ON deptno SKIP 1
COMPUTE SUM LABEL 'Dept Sum' OF sal ON deptno
COMPUTE SUM LABEL 'Total'    OF sal ON REPORT

SPOOL emp_report.lst

SELECT deptno, empno, ename, job, sal, comm
FROM emp
ORDER BY deptno, ename;

SPOOL OFF

結語

熟練掌握 SQL*Plus 格式化命令,能快速產出對齊美觀、含小計總計的文字報表,無需外部工具即可滿足大多數臨時查詢與定期匯出需求。

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