Function enhancement: support for rollback and commit.
create table table_func_rbk(a int, b int);
insert into table_func_rbk values(100,100);
insert into table_func_rbk values(200,200);
select * from table_func_rbk order by a;
create or replace function func_rollback1(a int) return int
is
begin
insert into table_func_rbk values(300,300);
commit;
insert into table_func_rbk values(400,400);
rollback;
update table_func_rbk set a = 400 where a = 300;
rollback;
delete from table_func_rbk where a = 100;
rollback;
return a;
end;
/
select func_rollback1(100);
select * from table_func_rbk order by a;
create or replace function func_rollback1(a int) return int
is
begin
insert into table_func_rbk values('asdasda');
exception
when others then
insert into table_func_rbk values(300,300);
commit;
insert into table_func_rbk values(400,400);
rollback;
update table_func_rbk set a = 400 where a = 300;
rollback;
delete from table_func_rbk where a = 100;
rollback;
return a;
end;
/
select func_rollback1(100);
select * from table_func_rbk order by a;
drop table table_func_rbk;
drop function func_rollback1;