42.15. Enhancements for Oracle

  1. 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;