oracle存储过程运行报错如何回滚

风之翼呢 2016-07-29 10:21:53
一共有三条插入语句,如果执行到第三条报错了,如何回滚之前1,2插入的数据呢?


create or replace PROCEDURE ADDproduct(v_prouct_item_id in number,v_name in varchar2,v_discription in varchar2,v_xieyiqi in varchar2)
AS
v_xieyiqi1 varchar2(100);
BEGIN
insert into UP_PRODUCT_ITEM1
(PRODUCT_ITEM_ID, EXTEND_ID, CODE, NAME, ALPHA_NAME, ITEM_TYPE, PRIORITY, SORT_BY, DESCRIPTION, CREATER, MODIFIER, STATE, DEL_FLAG, REMARKS, CREATE_DATE, MODIFY_DATE, EFF_DATE, EXP_DATE, USE_EFF_DATE, USE_EXP_DATE, ENTITY_ID, CHECKER, ISLOCK, SUPPLIER_ID, PROVIDER_TYPE, BUSINESS_DOMAIN_ID, OPER_REGION, SHORT_NAME)
values
(v_prouct_item_id,
null,
'',
v_name,
'',
'OFFER_PLAN',
null,
null,
v_discription,
999,
null,
'U',
'1',
'',
sysdate,
null,
sysdate,
to_date('31-12-2099', 'dd-mm-yyyy'),
null,
null,
0,
null,
'N',
null,
null,
null,
'',
'');
commit;
insert into UP_OFFER (OFFER_ID, OFFER_TYPE, PAY_TYPE, TRADEMARK, BUSI_TYPE, OFFER_PLAN_TYPE, PROD_SPEC_ID, PACKED_FLAG, IS_GLOBAL, DAILY_EFFECT, STOP_DISPOSE, MODIFY_DATE, MODIFIER, CREATE_DATE, CREATER, DEL_FLAG)
values (v_prouct_item_id, 'OFFER_PLAN_GSM', '1', 161000000100, null, null, 171000000001, null, null, null, null, null, null, sysdate, 999, '1');
commit;
if v_xieyiqi<>'无'
then
select substr(v_xieyiqi,1,2) into v_xieyiqi1 from dual ;
Dbms_Output.put_line(v_xieyiqi1);
insert into base.bs_para_detail (REGION_ID, PARA_TYPE, PARA_CODE, PARA_NAME, PARA1, PARA2, PARA3, PARA4, PARA5, PARA_DESC, STATE, OP_ID, STATE_DATE, REMARKS)
values ('X', 'BCE_CONFIG_KEY_'||v_prouct_item_id, 'NO_REPLACE_BUTTON', '几个月内不显示套餐变更按钮的策划', v_xieyiqi1, '', '', '', '', '', 'U', null, null, '');
commit;
else
null;
end if;
END ADDproduct;
...全文
802 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingshangwuheng 2016-08-29
  • 打赏
  • 举报
回复
查看ORACLE的exception相关文档吧,存储过程中定义exception,然后加入相关处理代码

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧