SQLPlus尾部空白问题

SQLPlus尾部空白问题,sql,oracle,sqlplus,Sql,Oracle,Sqlplus,我的脚本正在将一些查询的输出假脱机到文本文件 set linesize 200 set trimspool on .... spool "C:\someFile.txt" SELECT rpad(field1, 50)||rpad(field2, 50) FROM table1; SELECT rpad(field3, 200) FROM table2; spool off 我想要的是查询1中的每一行输出为100个字符(包括尾随空格),查询2中的每一行输出为200个字符(包括尾随空格) 如果

我的脚本正在将一些查询的输出假脱机到文本文件

set linesize 200
set trimspool on
....

spool "C:\someFile.txt"
SELECT rpad(field1, 50)||rpad(field2, 50) FROM table1;
SELECT rpad(field3, 200) FROM table2;
spool off
我想要的是查询1中的每一行输出为100个字符(包括尾随空格),查询2中的每一行输出为200个字符(包括尾随空格)

如果trimspool关闭,则每行有200个字符,这不是我想要的。如果启用,则在field3只有10个字符长的情况下,输出文件中该行的长度只有60个字符,需要100个字符。每一行都需要固定长度,因为文件将被发送到外部服务器,并根据固定长度的假设进行解析

有没有办法避免修剪我显式输出的空白?

这将起作用:

set trimspool off
spool "C:\someFile.txt"
set linesize 100
SELECT rpad(field1, 50)||rpad(field2, 50) FROM table1;
set linesize 200
SELECT rpad(field3, 200) FROM table2;
spool off
输出包括命令本身,因此如果您想去掉这些命令并只包括查询结果,请将所有命令放在脚本文件中,然后只执行脚本文件。还要将以下内容添加到脚本顶部:

set echo off
set termout off
set pagesize 0
set feedback off

太好了,谢谢!我不知道你能像那样用布景。但有一种情况对我来说不起作用:当field1=1时选择CASE,然后选择rpadfield2,50,否则选择rpadfield3,200结束于表1。你知道有没有可能在这个查询中找到一些有用的东西,使行数为50或200个字符,而不是总是200个字符?我不知道有什么方法可以将宽度从一个记录切换到下一个记录。基本问题是SELECT是一个Oracle命令,SET LINESIZE是SQLPlus命令。在Oracle world中进行选择时,您无法接触SQLPlus world来切换行大小。如果你不能忍受修剪过的行或者一组长度为100再加上一组长度为200,那么你需要一种新的方法,比如以后处理文件,或者编写一个使用UTL_文件库的存储过程,或者一个C/Java/C/PHP/任何可以查询和编写的程序。是的,这就是我的想法。问也无妨。