丁保国的博客

收集整理工作生活,点点滴滴

  :: :: 博问 :: 闪存 :: :: :: :: 管理 ::
Chapter 9 控制Sql * PLUS 的环境和数据字典简介

SQL> show echo
echo OFF
SQL> select * from dept;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

SQL> save "D:\Sql\echo_sample"
已创建 file D:\Sql\echo_sample.sql
SQL> @D:\Sql\echo_sample.sql

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON
SQL> set echo on
SQL> show echo
echo ON
SQL> @D:\sql\echo_sample.sql
SQL> select * from dept
  2  /

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON
        
SQL> show all
appinfo 为 OFF 并且已设置为 "SQL*Plus"
arraysize 15
autocommit OFF
autoprint OFF
autorecovery OFF
autotrace OFF
blockterminator "." (hex 2e)
btitle OFF 为下一条 SELECT 语句的前几个字符
cmdsep OFF
colsep " "
compatibility version NATIVE
concat "." (hex 2e)
copycommit 0
COPYTYPECHECK 为 ON
define "&" (hex 26)
describe DEPTH 1 LINENUM OFF INDENT ON
echo OFF
editfile "afiedt.buf"
embedded OFF
escape OFF
用于 6 或更多行的 FEEDBACK ON
flagger OFF
flush ON
heading ON
headsep "|" (hex 7c)
instance "local"
linesize 80
lno 14
loboffset 1
logsource ""
long 80
longchunksize 80
markup HTML OFF HEAD "<style type='text/css'> body {font:10pt Arial,Helvetica,sa
ns-serif; color:black; background:White;} p {font:10pt Arial,Helvetica,sans-seri
f; color:black; background:White;} table,tr,td {font:10pt Arial,Helvetica,sans-s
erif; color:Black; background:#f7f7e7; padding:0px 0px 0px 0px; margin:0px 0px 0
px 0px;} th {font:bold 10pt Arial,Helvetica,sans-serif; color:#336699; backgroun
d:#cccc99; padding:0px 0px 0px 0px;} h1 {font:16pt Arial,Helvetica,Geneva,sans-s
erif; color:#336699; background-color:White; border-bottom:1px solid #cccc99; ma
rgin-top:0pt; margin-bottom:0pt; padding:0px 0px 0px 0px;} h2 {font:bold 10pt Ar
ial,Helvetica,Geneva,sans-serif; color:#336699; background-color:White; margin-t
op:4pt; margin-bottom:0pt;} a {font:9pt Arial,Helvetica,sans-serif; color:#66330
0; background:#ffffff; margin-top:0pt; margin-bottom:0pt; vertical-align:top;}</
style><title>SQL*Plus Report</title>" BODY "" TABLE "border='1' width='90%' alig
n='center' summary='Script output'" SPOOL OFF ENTMAP ON PREFORMAT OFF
newpage 1
null ""
numformat ""
numwidth 10
pagesize 14
PAUSE 为 OFF
pno 0
recsep WRAP
recsepchar " " (hex 20)
release 1002000100
repfooter OFF  为 NULL
repheader OFF  为 NULL
serveroutput OFF
shiftinout INVISIBLE
showmode OFF
spool OFF
sqlblanklines OFF
sqlcase MIXED
sqlcode 0
sqlcontinue "> "
sqlnumber ON
sqlpluscompatibility 10.2.0
sqlprefix "#" (hex 23)
sqlprompt "SQL> "
sqlterminator ";" (hex 3b)
suffix "sql"
tab ON
termout ON
timing OFF
trimout ON
trimspool OFF
ttitle OFF 为下一条 SELECT 语句的前几个字符
underline "-" (hex 2d)
USER 为 "SYS"
verify ON
wrap : 将换至下一行
SQL>

SQL> show feedback
用于 6 或更多行的 FEEDBACK ON
SQL> select *
  2  from dept;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

SQL> select ename, sal
  2  from emp
  3  where sal > 1500;

ENAME             SAL
---------- ----------
ALLEN            1600
JONES            2975
BLAKE            2850
CLARK            2450
KING             5000
FORD             3000

已选择6行。

SQL> select * from dept;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

SQL> col deptno for 999999
SQL> select * from dept;

 DEPTNO DNAME          LOC
------- -------------- -------------
     10 ACCOUNTING     NEW YORK
     20 RESEARCH       DALLAS
     30 SALES          CHICAGO
     40 OPERATIONS     BOSTON

SQL> col loc for a9
SQL> select * from dept;

 DEPTNO DNAME          LOC
------- -------------- ---------
     10 ACCOUNTING     NEW YORK
     20 RESEARCH       DALLAS
     30 SALES          CHICAGO
     40 OPERATIONS     BOSTON

SQL> col loc heading 'Location' for a9
SQL> select * from dept;

 DEPTNO DNAME          Location
------- -------------- ---------
     10 ACCOUNTING     NEW YORK
     20 RESEARCH       DALLAS
     30 SALES          CHICAGO
     40 OPERATIONS     BOSTON
     
     
SQL> col loc heading '地  点' for a9
SQL> select * from dept;

 DEPTNO DNAME          地  点
------- -------------- ---------
     10 ACCOUNTING     NEW YORK
     20 RESEARCH       DALLAS
     30 SALES          CHICAGO
     40 OPERATIONS     BOSTON
SQL> col loc
COLUMN   loc ON
HEADING  '地  点'
FORMAT   a9
SQL> col deptno
COLUMN   deptno ON
FORMAT   999999
SQL>
SQL> col loc clear
SQL> select * from dept;

 DEPTNO DNAME          LOC
------- -------------- -------------
     10 ACCOUNTING     NEW YORK
     20 RESEARCH       DALLAS
     30 SALES          CHICAGO
     40 OPERATIONS     BOSTON

SQL> select ename, job, sal
  2  from emp
  3  where sal >= 1500;

ENAME      JOB              SAL
---------- --------- ----------
ALLEN      SALESMAN        1600
JONES      MANAGER         2975
BLAKE      MANAGER         2850
CLARK      MANAGER         2450
KING       PRESIDENT       5000
TURNER     SALESMAN        1500
FORD       ANALYST         3000

已选择7行。

SQL> col sal for $99,999.99
SQL> select ename, job, sal
  2  from emp
  3  where sal >= 1500;

ENAME      JOB               SAL
---------- --------- -----------
ALLEN      SALESMAN    $1,600.00
JONES      MANAGER     $2,975.00
BLAKE      MANAGER     $2,850.00
CLARK      MANAGER     $2,450.00
KING       PRESIDENT   $5,000.00
TURNER     SALESMAN    $1,500.00
FORD       ANALYST     $3,000.00

已选择7行。

SQL> col sal for $000,999.99
SQL> select ename, job, sal
  2  from emp
  3  where sal >= 1500;

ENAME      JOB                SAL
---------- --------- ------------
ALLEN      SALESMAN   $001,600.00
JONES      MANAGER    $002,975.00
BLAKE      MANAGER    $002,850.00
CLARK      MANAGER    $002,450.00
KING       PRESIDENT  $005,000.00
TURNER     SALESMAN   $001,500.00
FORD       ANALYST    $003,000.00

已选择7行。

SQL> col sal for L99,999.99
SQL> select ename, job, sal
  2  from emp
  3  where sal >= 1500;

ENAME      JOB                        SAL
---------- --------- --------------------
ALLEN      SALESMAN            ¥1,600.00
JONES      MANAGER             ¥2,975.00
BLAKE      MANAGER             ¥2,850.00
CLARK      MANAGER             ¥2,450.00
KING       PRESIDENT           ¥5,000.00
TURNER     SALESMAN            ¥1,500.00
FORD       ANALYST             ¥3,000.00

已选择7行。


9.6
REM ***This is a emplyees' salary report for senior management team ***
REM ***Strictly Confidential ***
set pagesize 25
set linesize 30
set feedback off
ttitle '==========Sun_Moon IT Company====|===== Employee salary report ========'
btitle'Strictly confidential !!!!'
break on deptno skip 2
column deptno heading 'Department|number'JUSTIFY CENTER FORMAT 99999999
column job    heading 'Job|Category' format A15
column avg(sal) heading 'Average|salary'format L99,999,00
column count(sal)heading'Employee|Numer'JUSTIFY CENTER FORMAT 99999999
column sum(sal) heading 'Sumnary|salary'format L99,999,00

select deptno,job avg(sal),count(sal),sum(sal)
from emp
group by deptno,job
/
set feedback on




 @d:\oracle\ming\report

9.6  SQL*PLUS的其他格式化命令
除了COLUMN命令外,SQL*PLUS还提供了一些其他的常用格式化命令,它们包括TITLE(Top Title)BTITLE(Bottom Title)        BREAK,其命令格式如下:

TTI[TLE][正文|offon] :设置每页顶部的头标。

BTI[TLE][ 正文|offon]:设置每页项部的脚标。

BREAK ON 列名[|别名][SKIP n]:去掉重复的行,并在断开点跳过n行。

CLEAR BREAK:清除所有的BREAK设置。

为了使BREAK有效地工作,需要在设置断点的列上使用ORDER BY 子句。

下面我们通一个比较完整的例子来更详细地介绍SQL*PLUS的一些常用的格式化命令:

REM ***This is a emplyees' salary report for senior management team ***

REM ***Strictly Confidential ***

set pagesize 25

set linesize 30

set feedback off

ttitle '==========Sun_Moon IT Company====|===== Employee salary report ========'

btitle'Strictly confidential !!!!'

break on deptno skip 2

column deptno heading 'Department|number'JUSTIFY CENTER FORMAT 99999999

column job    heading 'Job|Category' format A15

column avg(sal) heading 'Average|salary'format L99,999,00

column count(sal)heading'Employee|Numer'JUSTIFY CENTER FORMAT 99999999

column sum(sal) heading 'Sumnary|salary'format L99,999,00

select deptno,job avg(sal),count(sal),sum(sal)

from emp

group by deptno,job

/

set feedback on

 

现在我们来逐一解释上例中的命令。

(1)   REM开始的语句为注释,即在运行时ORACLE 并不执行该语句。注释语句只是一些帮助理解脚本文件内家的解释,可以在注释语句中放入任何您认为有用的句子。

(2)   SET PAGESIZE 25:设置报告的显示长度为25行。

(3)   SET LINESIZE 80:设置每行的显示宽度为80字符。

(4)   SET FEEDBACK OFF:关闭反馈。

(5)   TTITLE…:设置报告的头标为:==========Sun_Moon IT Company====|===== Employee salary report ========

(6)   BTITLE….设置报告的脚标为:Strictly Confidential!!!

(7)   BREAK ON deptno SKIP 2:设置当deptno变化时换行并跳过两行。

(8)   column deptno…..: 设置deptno题标为'Department中间对齐并显示7位数字

(9)   column job….:设置job的题标为Job并标显示15个字符。

(10)              column avg(sal):设置avg(sal) 的题标为Average并标显示7位数字,小数点后两位,千位符前两位,并在数据字前显示人民币符号。

(11)              column count(sal):设置count(sal) 的题标为'Employee并标显示3位数字, 中间对齐。

(12)              column sum(sal):设置sum(sal) 的题标为Sumnary并标显示7位数字,小数点后两位,千位符前两位,并在数据字前显示人民币符号。

(13)              set feedback on:打开反馈。
我们上例的命令report.sql的脚本文件中,该文件存在:d:\oracle\ming的目录下。请注意:必须在存文件之前用操作系统命令创建些目录。可以使用任何您喜欢的目录或文件名,之后我们装入并运该脚本。

 

 

 @d:\oracle\ming\report

结果:

 

 

以下是所显示报告的推荐步骤:

1.建立所需的SQL语句。

2.测试这些SQL语句。

3.把经过测试并没有错误的SQL语句存在一个脚本文件中。

4.SQL语句之前加上所需的SQL*PLUS的格式化命令。

5.SQL语句之后加上结束符“/”

6.之后恢复SQL*PLUS环境变量的默认设置。

7.存储该脚本文件。

8.运行该脚要文件。








9.7 数据字典和数据字典视图
参见另外一本书

       
posted on 2009-08-27 19:53  丁保国  阅读(255)  评论(0编辑  收藏  举报