免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3269 | 回复: 1
打印 上一主题 下一主题

[求助] 问个渣问题~~BLOB字段循环清空遇到的情况~求大神解惑~ [复制链接]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-04-29 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-04-26 17:32 |只看该作者 |倒序浏览
说白点,就是利用游标取表的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


求大神解惑~

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-04-29 06:20:00
2 [报告]
发表于 2016-04-26 17:57 |只看该作者
大神呢~求解答~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP