所有列的Oracle列宽

标签 oracle sqlplus

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

 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/

相关文章:

oracle - 如何美化来自命令提示符中 SELECT 查询的输出?

bash - 将变量从 bash shell 传递到 sql 文件到 oracle 表

mysql - SQL Plus - 别名类型问题

oracle - 在oracle中使用sys_connect_by_path函数时如何省略第一个和最后一个逗号?

linux - 如何在 linux 中启动 sqlplus (Oracle 12C)?

oracle - Oracle中向不同用户的某些表授予截断权限

php - 如何修复错误 "PHP Warning: oci_execute(): ORA-00932: inconsistent datatypes: expected DATE got NUMBER"?

sql - Grails迁移插件创建触发器

sql - count (*) 和 count(attribute_name) 有什么区别?

sql - 计算今天与 Oracle SQL 中的雇佣日期之间的天数?