我没看懂你的意思但是我有一样个批量删除的比如
/*
使用存储过程实现如下功能,批量删除实际选中的多个反馈活动。
*/
--包规范
create or replace package pak_activeinfo
as
procedure sp_activeinfo
(
i_activeid varchar2
);
end pak_activeinfo;
--包主体
create or replace package body pak_activeinfo
as
procedure sp_activeinfo
(
i_activeid varchar2
)
as
activeid1 varchar2(100);
activeid2 varchar2(100);
activeid3 varchar2(10000) := i_activeid;
a number;
b number;
begin
savepoint sp;--回滚点
select instr(activeid3,',') into a from dual;
b := a-1;
for i in 1..floor(length(activeid3)/b) loop--改正
--获取第一个编号
select substr(activeid3,1,b) into activeid1 from dual;
--修改表
update activeinfo set status = 1 where activeid = activeid1;
--截取第一个编号
select ltrim(activeid3,activeid1) into activeid2 from dual;
--去掉,号
select ltrim(activeid2,',') into activeid3 from dual;
end loop;
commit;
exception
when no_data_found then
dbms_output.put_line('失败!');
when others then
dbms_output.put_line('读去失败!原因是:'||sqlerrm);
rollback to savepoint sp;
end sp_activeinfo;
end pak_activeinfo;
--测试
begin
pak_activeinfo.sp_activeinfo('1000,1001,1002');
end;
能看懂吗?
按长度用循环去掉逗号!
希望对你有帮助!