暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

oracle如何查询输出与报表(上)

Oracle技术就绪 2015-09-22
658

如何查看当前会话环境变量

SQL*Plus 环境存储有许多控制会话所用的环境的行为,比如显示行的宽度、显示屏幕的行数量等。你可在登录成功后查看和修改这些环境变量。

问题的提出

当你登录到SQL>环境时,你需要了解SQL*Plus默认的环境变量的值什么,从而修改某些变量来满足你的要求。

实现技术

你成功登录到SQL*Plus后,可使用show all命令来显示目前SQL*Plus环境变量的值。

实现步骤

SQL>提示下,可用show all 来实现,如:

--

--适应版本:Oracle 9i~12c

--

SQL> --查看所有的参数当前值:

SQL> show all

appinfo OFF 并且已设置为 "SQL*Plus"

arraysize 15

autocommit OFF

autoprint OFF

说明

当你在刚登录成功后就使用show all显示的是默认的SQL*Plus参数,但是你可以修改这些变量,当你修改后再用show all看到的目前最新的环境变量。你所修改的变量只能是本次会话有效。

如何设置屏幕行的宽度和显示行数

默认情况,SQL>环境的许多环境变量都偏小,比如显示行的宽度默认是80个字符、每屏幕的行数量是24行等。

问题的提出

当你登录到SQL>环境时,SQL*Plus默认的环境变量一般都偏小,如果你希望你的查询结果显示整齐好看,你就得修改屏幕的显示行数量和行的宽度,那么,如何修改才能生效呢?

实现技术

要将行宽默认的80个字符修改大些以满足你的要求,可随时使用set linesize命令加参数值来实现。

实现步骤

要修改某个参数,可用Set Para_name Values 来实现,如:

--

--适应版本:Oracle 9i~12c

--

SQL>--显示行宽(Linesize)参数当前值:

SQL> show linesize

linesize 80

SQL>--修改行宽(Linesize)参数值为198个字符-这里只用line,可不使用linesize

SQL> set line 198

SQL> show linesize

linesize 198

--

--查看当前屏幕显示的行数量

SQL> show pagesize

pagesize 14

SQL> select ename,sal from emp;

ENAME SAL

---------- ----------

赵元杰 4500

SMITH 800

ALLEN 1600

WARD 1250

...

JAMES 950

FORD 3000

MILLER 1300

已选择15行。

SQL> set pages 40

SQL> /

ENAME SAL

---------- ----------

赵元杰 4500

SMITH 800

ALLEN 1600

...

JAMES 950

FORD 3000

MILLER 1300

已选择15行。

说明

这里需要指出的是,Oracle 环境变量的名词可以使用缩写,比如上面linesize是完成的拼写,可使用line 来替代linesize,比如:set line 180 ;另外可用set pagesize n 来设置每屏显示行数量,但建议不要将显示行设置过大,因为过大你会看不到标题提示而不知道某个列的含义。

如何截断查询结果后面的空格

SQL*Plus环境中,行的显示宽度默认为80个字符,但如果你将行宽度值设置为更宽的,比如设置为 set line 200 之后,就会出现这样的问题:当列的显示字符比所指定的宽度少时系统用空格替代。

问题的提出

SQL*Plus环境下用set line nnn指定了行的显示宽度后,Oracle会自动将不足这个宽度的列的末尾用空格来替代,那么如何使系统按照列的实际的字符来显示(去掉每个行后面这些空格)?

实现技术

要实现列按照指定的宽度显示,又不需要在后面增加多余的空格,可使用SET TRIMSPOOL ON命令来实现。这个命令的含义是“截断后面的空格”的意思。

实现步骤

在使用查询语句之前,先用SET TRIMSPOOL ON激活截断空格,然后再执行查询语句即可,如:

--

--适应版本:Oracle 9i~12c

--

SQL> set trimspool on

col USERNAME for a20

col DEFAULT_TABLESPACE for a20

col TEMPORARY_TABLESPACE for a20

col PROFILE for a20

select USERNAME,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE,

PROFILE,CREATED FROM dba_users;

说明

默认情况下,行截断功能是处于屏蔽状态(不截断后面的空格),如果你希望将结果按照对齐的格式显示,你可不使用这个命令或取消这个指定,可用SET TRIMSPOOL OFF 来取消原来的指定。



Oready即为“One Technology Ready”!

Oready不仅仅是数据库领域的专家,同时也是一个社区,我们汇集百位数据库领域资深顾问、讲师,服务于数据中心的技术支持与技能传授,注重对客户的关键数据库运营支撑,强调经验的分享-Skill Transfer,聚焦数据中心的完美结合.


文章转载自Oracle技术就绪,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论