sqlplus set linesize/pagesize等命令详解

178 篇文章 16 订阅

在sqlplus模式下,select查询时常会遇到返回记录折行的情况,这时候我们往往会设置行宽、列宽和页面记录数。

行宽

设置行宽使用 set linesize 语句,示例如下:

--设置行宽为200个字符
SQL> set linesize 200 

linesize默认值是80,可以通过show linesize 查看

SQL> show linesize
linesize 80

我们以v$parameter表为例进行讲解。

先查看 v$parameter 表各列定义的宽度:

SQL> desc v$parameter
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 NUM                                                NUMBER
 NAME                                               VARCHAR2(80)
 TYPE                                               NUMBER
 VALUE                                              VARCHAR2(4000)
 DISPLAY_VALUE                                      VARCHAR2(4000)
 ISDEFAULT                                          VARCHAR2(9)
 ISSES_MODIFIABLE                                   VARCHAR2(5)
 ISSYS_MODIFIABLE                                   VARCHAR2(9)
 ISINSTANCE_MODIFIABLE                              VARCHAR2(5)
 ISMODIFIED                                         VARCHAR2(10)
 ISADJUSTED                                         VARCHAR2(5)
 ISDEPRECATED                                       VARCHAR2(5)
 ISBASIC                                            VARCHAR2(5)
 DESCRIPTION                                        VARCHAR2(255)
 UPDATE_COMMENT                                     VARCHAR2(255)
 HASH                                               NUMBER

查询结果中,每列的宽度默认是根据该列定义的宽度显示的,比如某列定义9字符,那么没有使用col xxx format axxx 限制该列的宽度,那么该列就以所定义的9字符为宽度。

由上面的查询得知,ISDEFAULT、ISSES_MODIFIABLE 和 ISSYS_MODIFIABLE 列定义的宽度分别为9、5、9。

我们做如下查询进行验证:

SQL> select ISDEFAULT,ISSES_MODIFIABLE, ISSYS_MODIFIABLE from v$parameter;

ISDEFAULT ISSES ISSYS_MOD
--------- ----- ---------
TRUE      FALSE FALSE
FALSE     FALSE FALSE
TRUE      FALSE FALSE
TRUE      TRUE  IMMEDIATE
TRUE      TRUE  IMMEDIATE
TRUE      FALSE IMMEDIATE
TRUE      FALSE IMMEDIATE
TRUE      FALSE IMMEDIATE
TRUE      FALSE IMMEDIATE
TRUE      FALSE FALSE
TRUE      FALSE FALSE

可看出这3列显示的宽度确实为9、5、9 。

因为sqlplus命令窗口的宽度有限,所以虽然有的列定义为4000字符,但其最宽只能按照sqlplus命令行窗口的宽度来显示

我们通过v$parameter表的 DISPLAY_VALUE进行验证:

SQL> select DISPLAY_VALUE from v$parameter;

DISPLAY_VALUE
--------------------------------------------------------------------------------

150
248
TRUE
0
FALSE
0
0
8

可以看出列宽并未达到 4000字符。

列宽

设置行宽使用 column xxx format 语句(可简写为:col xxx format ),示例如下:

--设置name列宽为40个字符
SQL> column name format a40 //a表示alphanumeric,字符的意思

当列宽为默认的80时,进行如下查询:

--列宽为80
SQL> select name from v$parameter;

NAME
--------------------------------------------------------------------------------
lock_name_space
processes
sessions
timed_statistics
timed_os_statistics
resource_limit
license_max_sessions
license_sessions_warning
cpu_count
instance_groups
event

现修改name列宽为40后,再次查询:

--修改name列宽为40
SQL> column name format a40

--列宽显示由80变为40
SQL> select name from v$parameter;

NAME
----------------------------------------
lock_name_space
processes
sessions
timed_statistics
timed_os_statistics
resource_limit
license_max_sessions
license_sessions_warning
cpu_count
instance_groups
event
页面记录数

设置页面记录数使用 set pagesize 语句,示例如下:

--设置页面记录数为20
SQL>  set pagesize 20 

pagesize默认值是14,可以通过show pagesize 查看

SQL> show pagesize
pagesize 14

当pagesize为默认值14时,查询如下:

--每页显示14行记录
SQL> select name from v$parameter;

NAME
----------------------------------------
lock_name_space
processes
sessions
timed_statistics
timed_os_statistics
resource_limit
license_max_sessions
license_sessions_warning
cpu_count
instance_groups
event

NAME
----------------------------------------
sga_max_size
use_large_pages
pre_page_sga
shared_memory_address
hi_shared_memory_address
use_indirect_data_buffers
lock_sga
processor_group_name
shared_pool_size
large_pool_size
java_pool_size

将pagesize修改成20后再次查询:

SQL> set pagesize 20
SQL> select name from v$parameter;

NAME
----------------------------------------
lock_name_space
processes
sessions
timed_statistics
timed_os_statistics
resource_limit
license_max_sessions
license_sessions_warning
cpu_count
instance_groups
event
sga_max_size
use_large_pages
pre_page_sga
shared_memory_address
hi_shared_memory_address
use_indirect_data_buffers

NAME
----------------------------------------
lock_sga
processor_group_name
shared_pool_size
large_pool_size
java_pool_size
streams_pool_size
shared_pool_reserved_size
java_soft_sessionspace_limit
java_max_sessionspace_size
spfile
instance_type
nls_language
nls_territory
nls_sort
nls_date_language
nls_date_format
nls_currency

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值