【发布时间】:2021-07-06 05:31:40
【问题描述】:
创建表
create table curexample_test (id number, x number, y number, result number, process_flag varchar2(1), error_message varchar2(400))
insert into curexample_test
select 1, 20,4,null,null,null from dual
union
select 2, 15,3,null,null,null from dual
union
select 3, 36,9,null,null,null from dual
union
select 4, 7,0,null,null,null from dual
union
select 5, 105,15,null,null,null from dual
select * from curexample_test
创建函数
create or replace function divider(n1 in number, n2 in number)
return number
is
pragma autonomous_transaction;
n3 number;
begin
if n2 = 0 then
n3 :=null;
update curexample_test set process_flag = 'E' where n3 = null ;
else
n3 :=n1 / n2;
update curexample_test set process_flag = 'S' where n3 !=0 ;
end if;
COMMIT;
return n3;
end;
调用函数
select id,x,y , divider(x,y) as result,process_flag,error_message from curexample_test;
【问题讨论】: