§2.6.1 一般数据的格式化输出
在
Oracle
的
SQL>
下,经常用
COLUMN
命令来对所输出的列进行格式化,即按照一定的格式进行显示。
COLMUN
命令语法如下:
COL
[UMN] [{ column | expr } [ option_1 ... option_n ] ]
column
:列名
expr
:有效的
SQL
表达式
option_1
... option_n
:
可以是下列之一:
ALI[AS] alias
CLE[AR]
FOLD_A[FTER]
FOLD_B[EFORE]
FOR[MAT] format
HEA[DING] text
JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}
LIKE {expr|alias}
NEWL[INE]
NEW_V[ALUE] variable
NOPRI[NT]|PRI[NT]
NUL[L] text
OLD_V[ALUE] variable
ON|OFF
WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]
下面给出常用的关键字的解释:
Alias
给出列的别名,
BREAK
和
COUMN
可以引用所定义的别名。
CLEAR
取消列的定义。
FORMAT
列显示格式,
format
为:
9999990 9
或
0
的个数决定最多显示多少位
9,999,999.99
按照逗号和小数点来
显示数据,若是
0
以空格显示
099999
显示前面补
0
$999,999.99
数字前加美圆号
B99999
若为
0
,则结果为空白
99999Mi
若数字为负,则负号放在数字后(右边),缺省放在左边
99999PR
负号将以括号括起
9.999EEEE
以科学记数法表示(必须有
4
个
E
)
999V99
数字乘以
10n ,
如
1234
变为
123400
DATE
采用日期数字格式(
MM/DD/YY
)
Heading
重新标记列的显示标题,如
:
SQL> col ename heading
姓名
format a10
SQL> select ename,sal from emp;
例子:
SQL
COLUMN SALARY FOR $9,999,999.99
COLUMN LAST_NAME FOR A35.
§2.6.2 日期的格式化输出
Oracle
系统提供了一个
NLS_DATE_FORMAT
的环境变量来设置日期的显示格式。用它可以完成按照不同格式要求的显示,比如按照中国的习惯为
yyyy
年
mm
月
dd
日等。
1.系统日期 sysdate 的显示
用sysdate 可以显示ORACLE RDBMS 所在机器的日期及时间,如:
SQL> alter session set nls_date_format ='"
公元"yyyy"年"mm"月"dd"日"';
会话已更改。
SQL> select sysdate from dual;
SYSDATE
------------------
公元2001年05月30日
2.日期类型的显示
select sysdate,to_char(sysdate,
’
yyyy.mm.dd hh24:mi;ss
’
) from dual;
SQL> connect scott/tiger
已连接。
SQL> alter session set nls_date_format ='yyyy"
年"mm"月"dd"日生"';
会话已更改。
SQL> col HIREDATE heading
生日
SQL> col sal heading
工资
SQL> col sal ename
姓名
SQL> select ename,sal,hiredate from emp;
姓名 工资 生日
---------- ---------- -----------------
SMITH 800 1980年12月17日生
ALLEN 1600 1981年02月20日生
WARD 1250 1981年02月22日生
JONES 2975 1981年04月02日生
MARTIN 1250 1981年09月28日生
BLAKE 2850 1981年05月01日生
CLARK 2450 1981年06月09日生
SCOTT 3000 1987年04月19日生
KING 5000 1981年11月17日生
TURNER 1500 1981年09月08日生
ADAMS 1100 1987年05月23日生
JAMES 950 1981年12月03日生
FORD 3000 1981年12月03日生
MILLER 1300 1982年01月23日生
已选择14行。
§2.7 加标题
有时在输出一些结果时,可能需要加一些标题,如表上面的顶标题,落款等。这样的要求可由
Ttitle
和
Btitle
来完成。
ttitle
和btitle
ttitle [center|left|right]string
顶标题
btitle [center|left|right]string
底标题
ttitle center 'XX
公司人员情况表'
btitle left '
制表人:xxxx' right '日期:xxxx年xx月'
Clear ttitle
§2.8 建立简单报告
我们可以用
TTITLE
、
BTITLE
、
COLUMN
、
BREAK ON
、
COMPUTE SUM
及
SET LINESIZE
、
SET PAGESIZE
、
SET NEWPAGE
来设置查询结果的显示格式;在用
SPOOL
命令将显示结果输出到一个操作系统文件中去,一般输出文件的类型为
.LST
。
建立简单报告主要使用下面命令来实现:
1
. SPOOL命令
SPOOL filename
将缓冲区的内容写到文件中
SPOOL off
终止写命令
2
. COLUMN 命令
column col_name[
,heading] format format_spe
把字段的结果指定为一种输出格式
COL name heading '
姓名' for a10
COL sal heading '
工资' for 9,999.99
3.ttitle
、btitle
ttitle [center|left|right]string
顶标题
btitle [center|left|right]string
底标题
ttitle center 'XX
公司人员情况表'
btitle left '
制表人:赵元杰' right '日期:1998.11月'
Clear ttitle
4.break
、compute
clear breaks,clear computes
break on column
在该列上中断
break on row
在每一行上中断
break on Page
break on report
skip n
跳过n行
skip page
跳过未用完的页
compute avg
compute count
compute max
compute min
compute std
compute sum
compute var
compute num
计算所有行
compute sum of sal on deptno
5.set
在报表中的设置
l
set termout off
、set termout on 命令
l
set termout off
常用SPOOL XXX前,即关闭报表在屏幕上的显示(节省时间)
l
set termout on
常用SPOOL off之后,即恢复报表在屏幕上的显示
l
set ECHO{OFF|ON}
显示执行当中的各命令(即用start 时),set echo 受到 set termout 的影响
l
set Lin[esize]{80|integer}
设置行宽度,最大值999
l
set pag[esize] {24|integer}
设置页的大小
例子:
SQL>COL ename heading ‘
姓名
’ for a12
SQL>COL sal heading ‘
工资
’ for a999,999.99
SQL>COL hiredate heading ‘
出生
’
SQL>SET LINESIZE 200
SQL>SET PAGESIZE 60
SQL>SPOOL c:\all_emp
SQL>select ename,sal,deptno,hiredate from emp order by deptno;
SQL>SPOOL OFF
§2.9 输入变量
Oracle提供一种在处理SQL语句时可以将参数作为变量来对待的技术,即在条件句中可以是变量而不是具体的值,这样的处理就是输入变量。这 样做的目的就是可以重复使用同样的语句,每次只要输入相应的值即可。要实现将参数写成为变量,只要在变量前加一个&号即可。看下面语句:
Select sid, serial#,username, command from v$session
Where
USERNAME = upper(‘&usr’);
这样的语句在运行中,系统会自动提示你回答变量的具体值,上面语句运行时提示和回答时显示的信息如下:
SQL> Select sid, serial#,username, command from v$session
2 Where
USERNAME = upper('&usr');
输入 usr 的值: sys
原值
2: Where USERNAME = upper('&usr')
新值
2: Where USERNAME = upper('sys')
SID SERIAL# USERNAME COMMAND
---------- ---------- ------------------------------ ----------
7 26 SYS 3
在变量说明中,可以使用多个变量,比如:
Alter system kill session ‘&sid,&ser’;
或
Alter system kill session ‘&会话号,&序列号’;
它的运行情况如下:
SQL> Select sid, serial#,username, command from v$session;
SID SERIAL# USERNAME COMMAND
---------- ---------- ------------------------------ ----------
1 1 0
2 1 0
3 1 0
4 1 0
5 1 0
6 1 0
7 26 SYS 3
8 16 ZHAO 0
已选择
8
行。
SQL> Alter system kill session '&sid,&ser';
输入
sid
的值
: 8
输入
ser
的值
: 16
原值
1: Alter system kill session '&sid,&ser'
新值
1: Alter system kill session '8,16'
系统已更改。
一般系统缺省下是使用 “&” 符号来定义变量,你也可以使用另外的符号来代替,比如不喜欢用 & 而要用 ?,则有:
SQL> set define ?
SQL> select sid,serial#,username from v$session where username='?usr';
输入 usr 的值: SYS
原值 1: select sid,serial#,username from v$session where username='?usr'
新值 1: select sid,serial#,username from v$session where username='SYS'
SID SERIAL# USERNAME
---------- ---------- ------------------------------
7
26 SYS
次时由于我们修改了会话环境的参数值,可以用下面命令查看:
SQL> show define
define "?" (hex 3f)
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24387280/viewspace-696027/,如需转载,请注明出处,否则将追究法律责任。