我生成了一个动态假脱机文本并将它们存储在一个表中。然后我使用文件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 #####很多空间#####
_YYYYMMDD.csv”
一些文字....
* ** * **** * dynamic_spool_script.sql START * **
答案 0 :(得分:2)
你可以尝试
SET TRIMSPOOL ON
-- TRIMSPOOL = ON will remove trailing spaces from spooled output
它也可以帮助增加线条。
您是否检查过记录中没有新行?如果是这种情况,您可能必须删除它们。