0
我的脚本正在将某些查询的输出后台处理为文本文件。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个字符,包括尾随空白。
如果trimspool
已关闭,则每行都有200个字符,这不是我想要的。如果它打开,那么在field3只有10个字符长的情况下,输出文件中该行的长度只有60个字符(它需要为100)。每行需要固定长度,因为该文件将被发送到外部服务器,并且将基于假定它是固定长度进行分析。
有没有办法避免修剪我明确输出的空白?
太好了,谢谢!我不知道你可以像这样在整个过程中使用set。有一种情况不适用于我:'SELECT CASE when field1 = 1 THEN rpad(field2,50)ELSE rpad(field3,200)END END FROM table1'。你知道是否有可能为该查询获得某些功能,以便行数为50或200个字符,而不是总是200? – DiscoInfiltrator
我不知道有什么办法来改变从一个记录到下一个记录的宽度。基本问题是'SELECT'是一个Oracle命令,'SET LINESIZE'是SQL * Plus命令。当“SELECT”正在“Oracle世界”中进行时,您无法接触到“SQL * Plus”世界来切换线路大小。如果你不能使用修剪过的行或一组长度为100,然后是一组长度为200的文件,那么你需要一种新的方法,比如之后对文件进行调整,或者编写一个使用'UTL_File'的存储过程库,或C/Java/C#/ PHP /任何程序将查询和写入。 –
是的,这就是我的想法。没有问题。 – DiscoInfiltrator