通过存储过程操作临时表实现对表的增删改

系统 1727 0

A为表名 A_TR为临时表(操作完自动删除里面数据),下面是存储过程代码:

create or replace procedure A_UPDATE(p_id in varchar2)

as  

user_err exception; -- user exception                                  

user_err_code varchar2(200); -- contents of user error                         

err_sqlcode   varchar2(100); -- err code                                         

proc_name     varchar2(30) := 'a_update';  

tran_name     varchar2(30) := 'a_tr_tbl';

-- a_tr_tbl transaction  

cursor c_atr is select * from a_tr_tbl where USERID = p_id for update;  

atr_rec      a_tr_tbl%rowtype;

-- a_tbl  

cursor c_a is select * from a_tbl where name= atr_rec.name

AND id= atr_rec.id for update;  

a_rec      a_tbl%rowtype;   

begin

  open c_atr;  

  fetch c_atr into atr_rec;  

  while c_atr%found loop

-- a_tbl insert             

insert into a_tbl values (atr_rec.name,       

atr_rec.id,       

atr_rec.desc    

); --FREE_SPACE    

end if;    

-- a_tbl update    

open c_a;      

fetch c_a into a_rec;      

if c_a%notfound then      

user_err_code := 'update a_tbl not found';      

raise user_err;      

end if;            

update a_tbl set name= atr_rec.name,      

desc= atr_rec.desc    

 where current of c_a;       

close c_a;

end if;

-- a_tbl delete   

 open c_a;  

fetch c_a into a_rec;    

if c_a%notfound then    

user_err_code := 'delete a_tbl not found';    

raise user_err;    

end if;

    delete from a_tbl where current of c_a;     

close c_a;    

end if;    

delete from a_tr_tbl where current of c_atr;         

fetch c_atr into atr_rec;    

end loop;    

close c_atr;

exception  

when user_err then    

rollback;    

insert into err_tbl values(p_id, ' ', proc_name, user_err_code, sysdate, tran_name);  

when others then    

rollback;    

err_sqlcode := sqlcode || SQLERRM;

   insert into err_tbl values(p_id, ' ', proc_name, err_sqlcode, sysdate, tran_name);

end A_UPDATE; /

通过存储过程操作临时表实现对表的增删改


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论