ORA-21560: 参数 2 为空、无效或超出范围

Posted

技术标签:

【中文标题】ORA-21560: 参数 2 为空、无效或超出范围【英文标题】:ORA-21560: argument 2 is null, invalid, or out of range 【发布时间】:2016-12-28 16:24:19 【问题描述】:
create table test_clob
(
    id number,
    text clob
);

insert into test_clob values
(2,'Hi This can be a value that is too much old');

select * from test_clob;

SET serveroutput ON;
DECLARE
  vlength pls_integer;
  text_cbl CLOB;
  Var_temp1 VARCHAR2(1024);
  starti    number := 1;
  offset number:= 1;
  val pls_integer;
  amt pls_integer := 0;
BEGIN
  SELECT text INTO text_cbl FROM test_clob WHERE id = 2;
  vlength     := SYS.DBMS_lob.getlength(text_cbl);
  WHILE(starti < vlength)
  LOOP
      val := sys.dbms_lob.instr(text_cbl,chr(32),offset);
      amt := val - offset;
      sys.dbms_lob.read(text_cbl,amt,starti,Var_temp1);
      dbms_output.put_line(Var_temp1);
      offset := val;
      starti := val + 1;
  END LOOP;
END;

【问题讨论】:

我正在尝试使用 dbms_lob 包函数和过程从 clob 类型字段中提取每个单词。 错误信息有什么不清楚的地方?另外,请贴出完整的错误信息,以便人们知道错误发生在哪里 ORA-21560:参数 2 为空、无效或超出范围 ORA-06512:在“SYS.DBMS_LOB”,第 1081 行 ORA-06512:在第 16 行 ORA-06512:在“SYS .DBMS_SQL",第 1721 行 尝试调试你的代码而不调用出错的过程,而只是简单地假脱机你的变量;这将帮助您理解问题。我猜你这里可能有一个永无止境的循环 我把代码改成了 【参考方案1】:

在某些时候会有行尾或文本没有空格 ch ( 32) 所以在那个时候它返回 val offset then read。

【讨论】:

能否请您详细说明一下或标记我可以更改代码的位置。 其实第一个词出来的很好,然后就失败了 谢谢它似乎在工作,我输入了 if 来检查条件并更改了要搜索的空间的位置。它工作正常 我将部分代码放在要更改的位置 WHILE(starti 0 则 amt := val - 偏移; sys.dbms_lob.read(text_cbl,amt,starti,Var_temp1); dbms_output.put_line(Var_temp1);偏移量:= 值;开始 := val + 1;万一;结束循环;这可能会帮助你 请不要使用 cmets 来澄清答案,而是在答案中写下所有有用的内容。这将使答案更好(并会导致投票:))

以上是关于ORA-21560: 参数 2 为空、无效或超出范围的主要内容,如果未能解决你的问题,请参考以下文章

无效的过程调用或参数

Flutter Web:文件选择器抛出“无效参数(路径):不能为空”错误

如果字段为空,则忽略参数:无效令牌(

获取正文数据无效的帖子参数为空

Json Serializable - 无效参数(输入):不能为空

Excel返回#NUM!错误值原因及解决方法