在查询时经常出现的问题就是,查询的显示结果格式凌乱。
这个主要因为行,页,字段宽度设置不够显示而错位
下面是经常出现的效果:
解决问题方法:
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}