SQL> set linesize 100
SQL> col parameter for a40
SQL> col value for a40
http://blog.itpub.net/26844364/viewspace-723141
作为一名oracle dba,sqlplus是我们必须熟练掌握的工具。但是,命令行下的sqlplus有时表现的并不是那么友好,本人搜集了部分关于格式化sqlplus结果的文档,总结整理如下:
DEFINE _editor=vi -- windows下应改为define _eidtor=notepad
SET serveroutput on size 1000000
SET trimspool on
SET long 5000
SET linesize 120
SET PAGESIZE 16
---- Used by Trusted Oracle
COLUMN ROWLABEL FORMAT A15
----设置SHOW ERRORS 格式
COLUMN LINE/COL FORMAT A8
COLUMN ERROR FORMAT A65 WORD_WRAPPED
---- 设置 SHOW SGA 格式
COLUMN name_col_plus_show_sga FORMAT a24
---- 设置SHOW PARAMETERS 的格式
COLUMN name_col_plus_show_param FORMAT a36 HEADING NAME
COLUMN value_col_plus_show_param FORMAT a30 HEADING VALUE
----设置autotrace的格式
COLUMN id_plus_exp FORMAT 990 HEADING i
COLUMN parent_id_plus_exp FORMAT 990 HEADING p
COLUMN plan_plus_exp FORMAT a60
COLUMN object_node_plus_exp FORMAT a8
COLUMN other_tag_plus_exp FORMAT a29
COLUMN other_plus_exp FORMAT a44
----设置sqlprompt
COLUMN gname new_value gname
SET termout off
select lower(user)||'@'||global_name gname from global_name;
SET sqlprompt '&gname>'
SET termout on
2)、由于表中记录过长,一条记录换行显示,显得比较错乱,借鉴tom大师转列为行的思想,创建如下过程:
CREATE OR REPLACE PROCEDURE print_table( p_query in varchar2 )
AUTHID CURRENT_USER
IS
l_theCursor integer default dbms_sql.open_cursor;
l_columnValue varchar2(4000);
l_status integer;
l_descTbl dbms_sql.desc_tab;
l_colCnt number;
l_rowCnt number:=1;
BEGIN
dbms_sql.parse( l_theCursor, p_query, dbms_sql.native );
dbms_sql.describe_columns( l_theCursor, l_colCnt, l_descTbl);
for i in 1 .. l_colCnt loop
dbms_sql.define_column(l_theCursor, i, l_columnValue, 4000);
end loop;
l_status := dbms_sql.execute(l_theCursor);
while ( dbms_sql.fetch_rows(l_theCursor) > 0 ) loop
for i in 1 .. l_colCnt loop
dbms_sql.column_value( l_theCursor, i, l_columnValue );
dbms_output.put_line( rpad( l_descTbl(i).col_name, 30 )|| ': ' || l_columnValue );
end loop;
dbms_output.put_line();
dbms_output.put_line( '[ROW:'||l_rowCnt||']-----------------------------' );
l_rowCnt := l_rowCnt + 1;
end loop;
dbms_sql.close_cursor( l_theCursor );
EXCEPTION
when others then
dbms_sql.close_cursor( l_theCursor );
RAISE;
END print_table;
http://www.zhujiangroad.com/program/Oracle/20923.html
以下的文章主要是对Oracle sqlplus格式化数据的相关实际应用的介绍,我们大家都知道spool 在实际的应用中是很好运用的,但是其在格式化的相关数据上 ,对与set命令是不大熟悉的,于是网上找了下,在此备注下:
- SQL>set colsep ;
域输出分隔符
- SQL>set newp none
设置查询出来的数据分多少页显示,如果需要连续的数据,中间不要出现空行就把newp设置为none,这样输出的数据行都是连续的,中间没有空行之类的
- SQL>set echo off;
显示start启动的脚本中的每个sql命令,缺省为on
- SQL> set echo on
设置运行命令是是否显示语句
- SQL> set feedback on;
设置显示“已选择XX行”
- SQL>set feedback off;
回显本次sql命令处理的记录条数,缺省为on即去掉最后的 "已经选择10000行"
- SQL>set heading off;
输出域标题,缺省为on 设置为off就去掉了select结果的字段名,只显示Oracle sqlplus格式化数据
- 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进行分析
- set verify off
可以关闭和打开提示确认信息old 1和new 1的显示.
sqlplus /nolog @d:\sp.sql
d:\sp.sql内容如下:
- set head off
- set headsep off
- set newp none
- set linesize 100
- set pagesize 10000
- set sqlblanklines OFF
- set trimspool ON
- set termout off
- set feedback off
- spool d:\export.txt
- select NODECODE||&||NODETYPE||&||NODENAME||& from "000".tbnode;
- spool off
- exit
以上的相关内容就是对Oracle sqlplus格式化数据的介绍,望你能有所收获 。
http://www.net527.cn/shujukuguanli/Oracle/2011/0330/17182.html
1:首先 要 使crt有行的缓冲区,并出现横线滚动条
a:首 先全局设置:Options - Global Options - Terminal - Appearance - Maximum columns 最大只能设置成1024(推荐256),设置越大越占用内存,并选上show horizontal scroll bar,然后重启SecureCRT;
b: 然后session设置:Options - Session Options(或者Global Options - General - Default Session - Edit Default Session,这样就可以设置所有的Session) - Terminal - Emulation - Logical Columns 设置成255(推荐255,主要是因为Sqlplus里Dbms_output.put_line最多显示255字符限制,这里最大值只能设置成上面 Maximum columns大小,并选上Retain size and font)、Logical rows设置成42(刚好满屏)、Scrollback buffer设置成5000(这样纵向滚动屏就可以缓存更多内容,但占内存),另外Terminal - Appearance - Window - 选上Show horizontal scroll bar,然后重新连接。
2: 在crt 中运行sqlplus
未设置前:
运行命令:
set linesize 1000;
col member for a100;
设置后:
这样 显示的美观多了
总结:
col 列名 for(mat) 格式 :可对列进行格式化(a100 是针对varchar 的格式,显示100个字符,可以a60,a80),
例如:col file_name format a100;
col 列名:显示当前列的格式
clear column:清除所有列的格式
show linesize :显示sqlplus的环境变量,可设置在一个login.sql 中,每次运行sqlplus可自动设置了,但需要设置SQLPATH 环境变量指向login.sql。(责任编辑:admin)
http://www.cnblogs.com/sinoJay/archive/2013/02/21/2921364.html
命令 说明
remark 注释
set headsep 标题换行
ttitle 设置输出页的头标题
btitle 设置输出页的尾标题
column 对sql语句中的列进行格式化处理
break on 通知sqlplus在输出结果中插入空格
compute sum 通知sqlplus计算小计
set linesize(line) 设置sqlplus输出的最大行宽
-- set pagesize 设置页面的最大行数
set newpage 设置页面之间的空行数
spool sqlplus屏幕的文件输入输出命令
set pause sqlplus屏幕输出结果时在页面之间停顿
save 保存当前session最近的sql语句至指定的文件中
host 返回到操作系统环境类似!
start或@ 执行文件中的命令
edit 使用自定义的编辑器编辑指定文件
define_editor 自定义sqlplus里的编辑器
exit或quit 退出sqlplus
Column column是sqlplus里最实用的一个命令很多时候sql语句输出的列宽度不合适而影响查看都需要用到这个命令来更改select语句中指定列的宽度和标题。
大部分时候我们可以简写column为col即可主要有以下两种用法
修改列宽度 column c1 format a20
--将列c1字符型显示最大宽度调整为20个字符
column c1 format 9999999
--将列c1num型显示最大宽度调整为7个字符修改列标题
column c1 heading c2 --将c1的列名输出为c2
SQL>col file_name for a50;
就是指file_name这个字段会占据50列如果实际的值超过50列就只能换行了,for 其实是format的缩写a是什么意思一直没有明白哦
SQL>set linesize 200
是指整个sqlplus显示区域最多显示200列,如果不设置默认是显示80列
SQL>set linesize 100;
设置行高100
http://f.dataguru.cn/thread-132716-1-1.html
1) 格式调整有以下参数
set echo on/off 是否显示脚本中的需要执行的命令
set feedback on/off 是否显示 select 结果之后返回多少行的提示
set linesize n 设置一行最多显示多少字符,之前就是因为 n 设得过大,导致行与行之间有空白行
set termout on/off 在执行脚本时是否在屏幕上输出结果,如果 spool 到文件可以将其关闭
set heading on/off 是否显示查询结果的列名,如果设置为 off,将用空白行代替,如果要去除该空白行,可以用 set pagesize 0
set pagesize n 设置每页的行数,将 n 设为 0 可以不显示所有 headings, page breaks, titles, the initial blank line, and other formatting information
set trimspool on/off 在 spool 到文件时是否去除输出结果中行末尾的空白字符,之前的隔行可以用该参数去掉,和该参数对应的是 trimout,后者用于屏幕输出
set trimout on/off 是否去掉屏幕上输出结果行末尾的空白字符
set space on/off 输出列间空格数设置
2) 如果需要sqlplus下次启动的时候自动调整这些格式,可以将上面的设置保存到$ORACLE_HOME/sqlplus/admin/glogin.sql文件
3) 如何将输出重定向到文件
spool /tmp/sqlplus.output.txt
select [....] from [...]
spool off (只有关闭输出,才会在输出文件中看到输出的内容)
4) 列格式
col column_name format a50 (设置column_name为50个字符宽)
col column_name (显示列格式)
col column_name noprint (隐藏列)
CLEAR COLUMNS (将所有列的显示属性设为缺省值)
BREAK (显示对BREAK的设置 )
CLEAR BREAKS (删除BREAK的设置 )