所有列的Oracle列宽

例如,执行用于显示各种列的长语句时的问题之一

select g.guestid, g.forename, g.surname, b.bookingid,
 b.arrivedate, b.departdate, br.floorno, br.roomno from...

Linux终端上的列大小似乎是一个问题.例如,Forename VarChar(80)列在执行上述语句时会占用屏幕的大部分宽度,并且一种方法可以通过以下方式将其删除:

SET COLUMN FORENAME FORMAT A10

例如.但是,许多专栏需要反复进行,这很长.即

SET COLUMN FORENAME FORMAT A10
SET COLUMN SURNAME FORMAT A10

等等…

有没有办法说根据文字宽度调整列宽,以便每个人都很好地适应.而不是这样..

我更喜欢一些不涉及使用FUNCTIONS的解决方案.

不,没有简单的方法可以使SQL * Plus“自动调整”列宽到文本宽度.

但是,脚本编写可以让您的生活更轻松.

首先,减少打字.不要做SET COLUMN FORENAME FORMAT A10,做一些像@c forename 10这样的事情.

17:33:31 SYSTEM@dwal> cl col
columns cleared
17:33:33 SYSTEM@dwal> select * from dual;

D
-
X

Elapsed: 00:00:00.01
17:33:37 SYSTEM@dwal> @c dummy 10
17:33:43 SYSTEM@dwal> select * from dual;

DUMMY
----------
X

Elapsed: 00:00:00.01
17:33:45 SYSTEM@dwal> get s:\c.sql
  1* col &1. for a&2.
17:33:50 SYSTEM@dwal>

或者像这样快速隐藏宽列:

17:48:44 SYSTEM@dwal> select owner, table_name from all_tables where rownum = 1;

OWNER                          TABLE_NAME
------------------------------ ------------------------------
SYS                            CON$

Elapsed: 00:00:00.24
17:48:49 SYSTEM@dwal> @np owner
17:48:53 SYSTEM@dwal> select owner, table_name from all_tables where rownum = 1;

TABLE_NAME
------------------------------
CON$

Elapsed: 00:00:00.26
17:48:56 SYSTEM@dwal> get s:\np
  1  col &1 noprint
  2* @undef

这些只是我每天使用的许多脚本中的两个.这种方法需要花费时间和一些个人关注定制,以适应它并使其有效,但减少你显着按键的数量.

第二,有glogin.sql.它是一个脚本,每次连接到某个地方时都会执行.我假设您知道一个“长”列的列表,使您的行换行.

只需在那里列出它们,然后列出它们

SET COLUMN FORENAME FORMAT A10
SET COLUMN SURNAME FORMAT A10

每次(重新)连接时都会设置列参数.

相关文章
相关标签/搜索