有以下逻辑的存储过程 create or replace procedure pro1()begin --库存计算
if *** then
--库存计算,库存单价计算(进区)
PRO_TJ_JUDENUMBER_ForNew(strGateJobNo, CustomCode_);//该存储过程中未commit;
else
PRO_TJ_JUDENUMBER(strGateJobNo, CustomCode_);//该存储过程中未commit;
end if;
//存储过程PRO_TJ_JUDENUMBER_ForNew和PRO_TJ_JUDENUMBER操作同一张表
TotalResult := Get_TotalUSA(strGateJobNo);
if Iresult = '0' or TotalResult = '0' then
rollback;
else
commit;
end if;Exception
When Others Then
begin
rollback;
end;
end pro1;请问各位大侠,这一的处理逻辑,会出现数据不一致,脏读等问题吗?
请各位数据库高手指教...
if *** then
--库存计算,库存单价计算(进区)
PRO_TJ_JUDENUMBER_ForNew(strGateJobNo, CustomCode_);//该存储过程中未commit;
else
PRO_TJ_JUDENUMBER(strGateJobNo, CustomCode_);//该存储过程中未commit;
end if;
//存储过程PRO_TJ_JUDENUMBER_ForNew和PRO_TJ_JUDENUMBER操作同一张表
TotalResult := Get_TotalUSA(strGateJobNo);
if Iresult = '0' or TotalResult = '0' then
rollback;
else
commit;
end if;Exception
When Others Then
begin
rollback;
end;
end pro1;请问各位大侠,这一的处理逻辑,会出现数据不一致,脏读等问题吗?
请各位数据库高手指教...
应该不会出现数据不一致的状况。
因为:是在最后判断成功后,一起做的Commit, 而中间任何步骤如果出问题的话,都会Rollback。