Linux下Oracle SQL作业列别名被截断问题求助
问题
在Linux环境中运行SQL作业时,需要获取作业的开始与结束时间,执行了以下SQL语句:
select to_char(sysdate - 5/24, 'YYYY/MM/DD HH:MI:SS') "Job XXXXXX-28702-names01 started at:" from dual;
生成的假脱机文件输出如下:
Job XXXXXX-28702-na ------------------- 2024/05/10 07:55:42
日志中SYSDATE的时间获取正常,但双引号中的作业名称别名被截断为Job XXXXXX-28702-na(仅19个字符)。已尝试开启SERVER OUTPUT、设置LINESIZE 256和PAGESIZE 256,问题依旧,请问缺少哪种输出格式设置?
解决方法
这个问题源于列别名的默认显示宽度限制,和LINESIZE、PAGESIZE设置无关。Oracle SQL*Plus默认会把字符列的标题(别名)截断到19字符的默认宽度,必须显式指定对应列的显示格式才能解决。
你可以用COLUMN命令直接指定该长别名的显示宽度,示例如下:
COLUMN "Job XXXXXX-28702-names01 started at:" FORMAT A40
执行这条命令后再运行查询,别名就能完整显示(A40表示允许最多40个字符宽度,可根据实际别名长度调整数值)。
如果觉得长别名写起来麻烦,也可以给列设置一个短别名,再配置格式,比如:
COLUMN job_start FORMAT A40 select to_char(sysdate - 5/24, 'YYYY/MM/DD HH:MI:SS') job_start "Job XXXXXX-28702-names01 started at:" from dual;
内容的提问来源于stack exchange,提问作者RagnarLB
相关产品推荐
相关产品推荐

