- 論壇徽章:
- 1
|
說白點(diǎn),就是利用游標(biāo)取表的ID,然后循環(huán)清除該ID行的BLOB字段,代碼如下:
--循環(huán)存儲過程
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;
/
執(zhí)行存儲過程后,第一次循環(huán)沒問題,第二次循環(huán)就報(bào)錯了~
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
求大神解惑~ |
|