官术网_书友最值得收藏!

      3.4 格式化查詢結果

視頻講解:光盤\TM\lx\3\格式化查詢結果.mp4

為了在SQL*Plus環境中生成符合用戶需要規范的報表,SQL*Plus工具提供了多個用于格式化查詢結果的命令,使用這些命令可以實現設置列的標題、定義輸出值的顯示格式和顯示寬度、為報表增加頭標題和底標題、在報表中顯示當前日期和頁號等功能。下面就對常用的格式化命令進行講解。

3.4.1 COLUMN命令

該命令可以實現格式化查詢結果、設置列寬度、重新設置列標題等功能。其語法格式如下:

        COL[UMN] [column_name | alias | option]

column_name:用于指定要設置的列的名稱。

alias:用于指定列的別名,通過它可以把英文列標題設置為漢字。

option:用于指定某個列的顯示格式,option選項的值及其說明如表3.3所示。

表3.3 option選項的值及其說明

如果在關鍵字column后面未指定任何參數,則column命令將顯示SQL*Plus環境中所有列的當前定義屬性;如果在column后面指定某個列名,則顯示指定列的當前定義屬性。接下來將對表3.3中的常用option選項值進行舉例說明。

1. FORMAT選項

該選項用于格式化指定的列,需要在FORMAT關鍵字的后面跟一個掩碼格式。

【例3.19】 使用FORMAT選項格式化scott.emp表中的員工工資為$999,999.00格式,代碼如下(實例位置:光盤\TM\sl\3\7)

        SQL> col sal format $999,999.00
        SQL> select empno, ename, sal from scott.emp;

本例運行結果如圖3.10所示。

圖3.10 格式化員工工資

2. HEADING選項

該選項用于定義列標題,比如,許多數據表或視圖的列名都為英文形式,可以使用此選項將英文形式的列標題顯示為中文形式。

【例3.20】 使用HEADING選項把scott.emp表中的empno、ename、sal三個列名轉換為中文形式,代碼如下(實例位置:光盤\TM\sl\3\8)

        SQL>col empno heading雇員編號
        SQL>col ename heading雇員姓名
        SQL>col sal heading雇員工資
        SQL> select empno, ename, sal from scott.emp;

本例運行結果如圖3.11所示。

圖3.11 把列名轉換為中文形式

3. NULL選項

在該選項的后面指定一個字符串,如果列的值為null,則用該字符串代替空值。

【例3.21】 使用NULL選項把scott.emp表中comm列值為null顯示成“空值”字符串,代碼如下(實例位置:光盤\TM\sl\3\9)

        SQL> col comm null ’空值’
        SQL> select empno, ename, comm from scott.emp where comm is null;

本例運行結果如圖3.12所示。

圖3.12 把null顯示成“空值”字符串

4. ON|OFF選項

該選項用于控制定義的顯示屬性的狀態,OFF表示定義的所有顯示屬性都不起作用,默認為ON。

【例3.22】設置scott.emp表中的sal列(工資列)的格式為$999,999.00,但同時使用OFF選項取消定義的列屬性狀態,輸出結果顯示sal列沒有被格式化,代碼如下(實例位置:光盤\TM\sl\3\10)。

        SQL> col sal format $999,999.00
        SQL> col sal off
        SQL> select empno, ename, sal from scott.emp;

本例運行結果如圖3.13所示。

圖3.13 使用OFF選項取消定義的列屬性狀態

5. WRAPPED/WORD_WRAPPED選項

這兩個選項都用于實現折行的功能,WRAPPED選項按照指定長度折行,WORD_WRAPPED選項按照完整字符串折行。

【例3.23】 使用WRAPPED選項實現按照指定長度折行,代碼及運行結果如下。

        SQL> select col1 from test;


        COL1
        -------------------
        HOW ARE YOU?


        已選擇1行


        SQL> column col1 format a5
        SQL> column col1 wrapped
        SQL> select col1 from test;


        COL1
        ------------------
        HOW A
        RE YO
        U?

【例3.24】 使用WORD_WRAPPED選項按照完整字符串折行,代碼及運行結果如下。

        SQL> col col1 word_wrapped


        COL1
        ------------------
        HOW
        ARE
        YOU?

3.4.2 TTITLE和BTITLE命令

在SQL*Plus環境中,執行SQL語句后的顯示結果在默認情況下包括列標題、頁分割線、查詢結果和行數合計等內容,用這些默認的輸出信息打印報表,并不十分美觀。如果能為整個輸出結果設置報表頭(即頭標題)、為每頁都設置頁標題和頁碼、為整個輸出結果設置報表尾(如打印時間或打印人員),那么使用這樣的輸出結果打印報表一定非常美觀。為了實現這些功能,SQL*Plus工具提供了TTITLE和BTITLE命令,這兩個命令分別用來設置打印時每頁的頂部和底部標題。其中,TTITLE命令的語法格式如下:

表3.4 printspec選項的值及其說明

        TTI[TLE] [printspec [text|variable] ...] | [OFF|ON]

printspec:用來作為頭標題的修飾性選項。printspec選項的值及其說明如表3.4所示。

text:用于設置輸出結果的頭標題(即報表頭文字)。

variable:用于在頭標題中輸出相應的變量值。

OFF:表示禁止打印頭標題。

ON:表示允許打印頭標題。

注意

BTITLE的語法格式與TTITLE的語法格式相同。如果在TTITLE或BTITLE命令后沒有任何參數,則顯示當前的TTITLE或BTITLE的定義。

【例3.25】 打印輸出scott.salgrade數據表中的所有記錄,并要求為每頁設置頭標題(報表名稱)和底標題(打印時間和打印人),代碼如下(實例位置:光盤\TM\sl\3\11)

        SQL> set pagesize 8
        SQL>ttitle left'          銷售情況排行表’
        SQL>btitle left’打印日期:2011年9月20日   打印人:東方’
        SQL> select * from scott.salgrade;

本例運行結果如圖3.14所示。

圖3.14 顯示打印時間和打印人

在上面的例子中,頭標題“銷售情況排行表”是一個固定的字符串,另外,頭標題也可以使用變量來輸出。

【例3.26】 打印輸出scott.salgrade數據表中的所有記錄,并要求頭標題和底標題都使用define命令定義的變量輸出,代碼如下(實例位置:光盤\TM\sl\3\12)。

        SQL> set pagesize 8
        SQL>define varT='          雇員信息表’
        SQL> define varB=’操作員:東方’
        SQL> ttitle left varT
        SQL> btitle left varB
        SQL> select empno, ename, job from scott.emp;

本例運行結果如圖3.15所示。

圖3.15 輸出頭標題和底標題

上面代碼中所設置的頭標題和底標題的有效期直到本次會話結束后才終止。若要手動清除這些設置,可以分別使用ttitle off命令和btitle off命令取消頭標題和底標題的設置信息。

主站蜘蛛池模板: 东至县| 来安县| 安福县| 喜德县| 全州县| 承德县| 手游| 宜良县| 常山县| 边坝县| 丹阳市| 白玉县| 车险| 铜陵市| 南溪县| 延庆县| 怀柔区| 万全县| 赞皇县| 河源市| 木兰县| 庆元县| 宾阳县| 昆明市| 马关县| 阜康市| 轮台县| 丹棱县| 霍城县| 靖州| 石嘴山市| 克山县| 滦平县| 巫溪县| 沙河市| 汽车| 木里| 临洮县| 浮山县| 达拉特旗| 股票|