在 sqlplus 中执行脚本时出错,选项不是有效数字

Posted

技术标签:

【中文标题】在 sqlplus 中执行脚本时出错,选项不是有效数字【英文标题】:Error when executing script in sqlplus, option not a valid number 【发布时间】:2018-11-26 10:24:11 【问题描述】:

我正在尝试在 sqlplus 中执行此命令,我已尝试将其放入 .sql 文件,还有 .txt 文件。

set linesize 400;
set pages 999; 
spool odi_query.txt 
declare 
v_extract_date DATE; 
begin 
select extract_date into v_extract_date
from LORIK_UNIT.Toad_zhurnal; 
LORIK_UNIT.lorik_utils.p_create_daily_partitions (v_extract_date ); 
end; 
/ 
spool off 

这是我执行后收到的错误:

SP2-0268: linesize option not a valid number
SP2-0268: pagesize option not a valid number

有谁知道是什么原因造成的?

【问题讨论】:

这对我来说没问题。请复制/粘贴整个 SQL*Plus 会话,以便我们了解您的具体操作以及 Oracle 的响应方式。除此之外,除非表 toad_zhurnal 包含一行,否则该选择将引发 TOO_MANY_ROWS(或者,可能是 NO_DATA_FOUND 错误)。 这可能是屏幕截图有用的极少数情况之一。 可能还想检查您的行尾是否与您运行它的环境匹配(unix/windows)。 【参考方案1】:

似乎这段代码在每一行之后都有多余的空格,通过删除它们,现在它可以顺利执行了。

set linesize 400
set pages 999

spool odi_query.txt

declare
v_extract_date DATE;
begin

select extract_date into v_extract_date
from LORIK_UNIT.Toad_zhurnal;

LORIK_UNIT.lorik_utils.p_create_daily_partitions (v_extract_date );
end;
/
spool off

【讨论】:

【参考方案2】:

删除行尾的分号;

【讨论】:

好的...然后,错误消息仍然应该提供提示。如果分号删除没有帮助,那么您的代码应该有一些其他隐藏字符,这些字符被解析为参数的一部分,即例如正如@kfinity 指出的那样,控制字符。正如其他人所说,为了更好地调查,请提供您所做的整个操作。 现在工作正常,我检查了空格,似乎每行后面都有一个空格。删除这些空格后,程序成功完成。

以上是关于在 sqlplus 中执行脚本时出错,选项不是有效数字的主要内容,如果未能解决你的问题,请参考以下文章

通过 shell 脚本执行合并时出错

sqlplus 中的 -s 选项是做啥用的?

sqlplus执行sql文件出错后继续

linux下的sqlplus命令

插入记录时 SQLPlus 命令行脚本挂起

如何在shell中调SQLPLUS 执行SQL语句