不能在文件中 SPOOL long header

Cannot SPOOL long header in a file

我正在尝试假脱机 header 文件中有 208 个字段

  set feedback off
  set verify off
  set head off
  set echo off
  set pages 0
  set trimspool on
  SET LINESIZE 500

spool ${FILE_NAME}

select 'Field1,Field2,.........Field208'
from dual;

 SPOOL OFF
 exit

我收到以下错误

SP2-0027: Input is too long (> 2499 characters) - line ignored

如何完成任务??

SP2-0027: Input is too long (> 2499 characters) - line ignored

您已达到 SQL*Plus 的限制,这对行的长度有绝对限制 2,499 个字符.

在 SQL*Plus 中做到这一点的唯一方法是在 SQL 语句中使用 换行符 而不是单行并将每个与上一个一致。

例如,

改变这个:

SQL> SELECT 'lalitkumar' NAME from dual;

NAME
----------
lalitkumar

为此:

SQL> select 'lalit'
  2  ||'kumar' name from dual;

NAME
----------
lalitkumar

SQL>

您需要将字符串文字分成两行或更多行,以避免 the SQL*Plus command line limit(这与假脱机无关)。然后,您可以将单独的字符串文字连接在一起,以在一行中获得输出:

select 'Field1,Field2,.........Field99'
    || 'Field101,Field102,.........Field199'
    || 'Field201,Field202,.........Field208'
from dual;

您需要拆分字符串的次数和位置取决于您的实际值。

您还需要将 linesize 设置为比当前的 500 高很多,否则它会将输出包装成多行;它至少需要 2500,因为您已经达到了至少 2500,但可能要多得多 - 再次取决于您的实际数据。也许你的意思是 5000...