【发布时间】: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 行
-
尝试调试你的代码而不调用出错的过程,而只是简单地假脱机你的变量;这将帮助您理解问题。我猜你这里可能有一个永无止境的循环
-
我把代码改成了