例如,在执行长语句以显示各种列时的问题之一
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
例如。但是,许多列将需要重复经过很长的时间。 IE。
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
列参数将在您每次(重新)连接时进行设置。
关于所有列的Oracle列宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15473059/