我有许多sql报告,它们过去工作得很好。然而,最近,它们已经开始输出,列宽比它们应该的更长。根据Oracle的文档,如果sql中的一个列在报表开头没有显式的"COLUMN“定义,例如'column example_col heading "Eg col" format A50',它应该以与数据库表中列的定义相同的宽度显示,也就是说,如果该列被定义为varchar2(10),它应该以10个字符的宽度显示。
以前,这是很好的,但是最近,这些列中的一些已经开始以更大的宽度显示,这使得报表的行超出了行大小,扩展到了第二行,从而降低了报表的可读性。
我只是想看看以前是否有人遇到过这种行为,并可能知道原因是什么?下面是其中一个报告的前后图片,这样您就可以看到问题了。
发布于 2021-03-11 18:15:17
结果是,在将NLS_LANG环境变量设置为AMERICAN_AMERICA.AL32UTF8时出现了问题。这将导致在SQLPlus中输出时扩展列宽度。解决方案是将这个环境变量更改为AMERICAN_AMERICA.WE8ISO8859P1。
有关Oracle Metalink的详细信息如下:
在不同的SQL*Plus会话中运行相同语句的症状会导致输出的长度不同。 第1场会议: SQL>选择sysdate,sysdate从对偶;SYSDATE SYSDATE
10月30日至08年10月30日至8日
第2场会议:
SQL>选择sysdate,sysdate从对偶;SYSDATE SYSDATE
10月30日至08年10月30日至8日
因为NLS_LANG字符集决定输出的显示方式。
当使用多字节字符集时,列宽度将更大。为NLS_LANG设置解决方案字符集以获得所需的输出。如果需要“长”输出,请使用UTF8作为字符集。确保客户端操作系统能够处理选定的字符集。
发布于 2021-03-09 06:53:21
从我的观点来看,这是COLUMN。
问题是:在“之前”和“之后”之间发生了什么变化?有几种可能性:
COLUMN格式行CLEAR COLUMNS,因此所有列设置都丢失了。.SQL文件login.sqlglogin.sqlhttps://stackoverflow.com/questions/66539086
复制相似问题