Oracle 解决显示凌乱串行问题及column、pagesize、linesize的设定

在查询时经常出现的问题就是,查询的显示结果格式凌乱。

这个主要因为行,页,字段宽度设置不够显示而错位

下面是经常出现的效果:

格式不对

解决问题方法:

SQL> set linesize 1000

SQL> set pagesize 100

问题基本得以解决,下面详细说一下命令及参数意义

使用linesize命令
设置一行显示的字符数量,默认情况下显示80个字符
set linesize n(有效范围是1-32767)
SQL> set linesize 1000
SQL>r
若还是没显示完全进一步设置pagesize

使用pagesize命令
使用此命令,可以设置每一页的大小,从而控制每一页显示的数据量
set pagesize n(n最大值为50000,默认值为14,到了14行会把标题再次打出,下面跟数据)
SQL> set pagesize 100
SQL>r

除了上述还可以通过COL命令设置字段宽度,因为有些时候一个字段会空留出很多空字符

如col file_name for a50;
就是指file_name这个字段会占据50列,如果实际的值超过50列,就只能换行了
for 其实是format的缩写,示例如下
Sql>select empno,ename,job from emp; 
   EMPNO ENAME    JOB       
   ----------  ----------    ----------------- 
   7369      SMITH    CLERK    
   7499      ALLEN    SALESMAN 
   7521      WARD    SALESMAN 
Sql> col ename format a40

Sql> r  

   EMPNO ENAME                                   JOB 
   ---------- ---------------------------------------- ---------

   7369     SMITH                                      CLERK 
   7499     ALLEN                                      SALESMAN 
   7521     WARD                                      SALESMAN 

常用命令:

set line 200

set pagesize 10000

set heading off

col EMPLOYEE_ID FOR 9999

col FIRST_NAME FOR A15

col LAST_NAME FOR A15

col EMAIL FOR A8

col PHONE_NUMBER FOR A20

col HIRE_DATE FOR A15

col JOB_ID FOR A15

col SALARY FOR 9999999.99

col COMMISSION_PCT FOR 9999.99

col DEPARTMENT_ID FOR 9999

set feedback off

spool D:/app/data.txt

select * from employees;

spool off

COL命令:
主要格式化列的显示形式。
该命令有许多选项,具体如下:
COL[UMN] [{ column|expr} [ option ...]]
Option选项可以是如下的子句:
www.2cto.com
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]

set命令详解

SQL>set colsep '|'; //输出分隔符
eg、
SQL> set colsep '|';
SQL> select * from dept;

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

SQL>set echo off; //显示start启动的脚本中的每个sql命令,缺省为on
SQL>set echo on; //设置运行命令是否显示语句
eg、
SQL> set echo on;
SQL> start d:/log.sql;
SQL> select * from dept
  2  /

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

SQL>set feedback on; //设置显示“已选择XX行”
SQL>set feedback off; //回显本次sql命令处理的记录条数,缺省为on
SQL>set heading on; //输出字段标题,缺省为on
SQL>set pagesize 0;  //输出每页行数,缺省为24,为了避免分页,可设定为0。
SQL>set linesize 80; //输出一行字符个数,缺省为80
SQL>set numwidth 12; //输出number类型长度,缺省为10
SQL>set termout off; //显示脚本中的命令的执行结果,缺省为on
SQL>set trimout on; //去除标准输出每行的拖尾空格,缺省为off
SQL>set trimspool on; //去除重定向(spool)输出每行的拖尾空格,缺省为off
SQL>set serveroutput on; //设置允许显示输出类似dbms_output
SQL>set timing on; //设置显示“已用时间:XXXX”
SQL>set autotrace on; //设置允许对执行的sql进行分析
SQL>set verify off; //可以关闭和打开提示确认信息old 1和new 1的显示.
eg、
SQL> SET VERIFY ON;
SQL> SELECT empno, ename, sal, deptno FROM emp WHERE empno = &employee_num;
输入 employee_num 的值:  7369
原值 1: SELECT empno, ename, sal, deptno FROM emp WHERE empno = &employ
新值 1: SELECT empno, ename, sal, deptno FROM emp WHERE empno = 7369

 DEPTNO|DNAME         |LOC
---———-|————–|————-
        7369|SMITH     |      8888|        20

SQL> show arraysize
SQL> set arraysize 20
它表示从Oracle服务器端一次只传递15行记录到客户端(SQLPLUS),SQLPLUS中arraysize默认为15。

SQL> show long //设置显示long,lob等型字段的长度,默认为80
SQL> set long 80 

SQL> show PAUSE //设置滚屏是否自动
SQL> set PAUSE  {OFF | ON | text}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值