0

我生成了一个动态假脱机文本并将它们存储在一个表中。然后我使用文件 A 假脱机文本以创建 dynamic_spool_script.sql。在 dynamic_spool_script.sql 中,当我运行 dynamic_spool_script.sql 时,随机行的第 50 和第 60 个字符之间出现意外换行,导致 sybtax 错误。在我的原文中,没有一行超过 100 个字符。我正在使用 oracle 11g。

任何建议/帮助将不胜感激。


编辑:对于包装的文件名,我在 plsql 中使用变量创建了文本。然后我连接不同的文本变量并将最终文本存储在 CLOB 类型的表列中。

v_file_name VARCHAR2(200);
v_file_name := 'spool "'||v_out_path||'/'||v_dynamic_name||
'_rest_of_file_name_'||TO_CHAR(v_batch_date,'YYYYMMDD')||'.csv"'||chr(10)||chr(10);

我可以从表中复制文本并直接在 sql plus 中运行。这足以验证没有意外的新行或控制字符吗?只是当我将文本从表中假脱机到文件时,会出现换行问题。


编辑结束

** * ***文件 A 开始* **
set linesize 100
set pagesize 0
set long 200000
set echo off
set heading off
set term off
set time off
set feedback off
set timing off

column spool_file format a100

spool &1/dynamic_spool_script.sql
select * from dynamic_spool_text;
spool off;
* ** * ** * *文件 A 结束* ** * ** * ** *

** * ** * *dynamic_spool_script.sql START* **

一些文本....
spool "/file_path/File_name_not_more_than_100C #####a lot of space#####
_YYYYMMDD.csv"
一些文本....

* ** * **** *dynamic_spool_script.sql 开始* **

4

1 回答 1

2

你可以试试

SET TRIMSPOOL ON 
-- TRIMSPOOL = ON will remove trailing spaces from spooled output

它还可以帮助增加线条大小。

您是否检查过记录中没有换行符?如果是这种情况,您可能必须删除它们。

于 2013-05-03T05:55:11.860 回答