4eon 发表于 2016-04-26 17:32

问个渣问题~~BLOB字段循环清空遇到的情况~求大神解惑~

说白点,就是利用游标取表的ID,然后循环清除该ID行的BLOB字段,代码如下:
--循环存储过程
create or replace procedure pro_clearblob
as
begin
declare
cursor cur_cid is select c_id from t_ecgdatastore;
v_blob blob;
v_length number;
v_cid number;
begin
open cur_cid;
loop
fetch cur_cid into v_cid;
EXIT WHEN cur_cid%NOTFOUND;
select C_DATAINFO into v_blob from t_ecgdatastore where c_id = v_cid FOR UPDATE; --找到指定位置的blob
v_length:=dbms_lob.getLength(v_blob); --获取blob的长度
DBMS_LOB.Erase(v_blob,v_length,1); --清除blob
commit;
dbms_output.put_line(v_cid); --打印清除blob的cid
end loop;
close cur_cid;
end;
end pro_clearblob;
/



执行存储过程后,第一次循环没问题,第二次循环就报错了~
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: invalid LOB locator specified:
ORA-22275
ORA-06512: at "SYS.DBMS_LOB", line 481
ORA-06512: at "YOCALYADMIN.PRO_CLEARBLOB", line 18
ORA-06512: at line 1


求大神解惑~

4eon 发表于 2016-04-26 17:57

大神呢~求解答~
页: [1]
查看完整版本: 问个渣问题~~BLOB字段循环清空遇到的情况~求大神解惑~