不能在文件中使用SPOOL长标头

时间:2016-02-12 09:57:44

标签: oracle sqlplus spool

我正在尝试使用文件中的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

我如何完成任务?

2 个答案:

答案 0 :(得分:2)

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

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

你需要多长时间来分割字符串,以及在哪里,取决于你的实际值。

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

答案 1 :(得分:0)

  

SP2-0027:输入太长(> 2499个字符) - 忽略行

您已达到 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>