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:文件选择器抛出“无效参数(路径):不能为空”错误