CREATE OR REPLACE FUNCTION KV_SetValue(
szKey varchar,
nValID int,
i64ChangedVal int,
bOverlay int,
szTable varchar,
i64TotalVal out int
)
return integer
is
m_strSQL varchar2(1000);
begin
if bOverlay > 0 then
m_strSQL := 'update ' || szTable || ' set Value=:1 where KeyName=:2 and ValID=:3 returning Value into :4';
else
m_strSQL := 'update ' || szTable || ' set Value=Value+:1 where KeyName=:2 and ValID=:3 returning Value into :4';
end if;
execute immediate m_strSQL
using i64ChangedVal, szKey, nValID returning into i64TotalVal;
--!!!注意!!! 此处不需要提交,由程序调用多次手动提交,保证事务正常处理/commit;
return 1;
exception
when others then
return 0;
end;
/