用 proc 命令不知为何会重复执行 oracle 存储过程

集算器语句如下:两个输入参数,中间是输出参数。
=A4.proc(“{call TL_GetTestID(?,?,?)}”,2443:1, :11:“o”:sheetid, A14:11)

存储过程代码如下:

根据条件取序列号,用 plsql 调用没问题,用集算器调用一次会重复。
即 SerialNumber 会被加 2

CREATE OR REPLACE Procedure TL_GetTestID
(v_SheetType In Number Default Null,
v_SheetID Out Varchar2,
v_ShopID IN varchar2 default null)

IS
PRAGMA AUTONOMOUS_TRANSACTION;
v_ERR Number(10, 0);
v_nSerial Number(10, 0);
v_dDate Date;
v_DateStr Varchar2(8);
v_myShopID Varchar2(4);
v_Len Number(10);
v_Msg Varchar2(50);
Begin

update SerialNumber set SerialNumber = SerialNumber + 1
where serialid = v_SheetType and shopid = v_ShopID;

begin
select SERIALNUMBER into v_nSerial
from SerialNumber
where serialid = v_SheetType and shopid = v_ShopID;

        Exception When NO_DATA_FOUND Then
               v_Msg := 'SerialNumber表中不存在SerialID='||to_char(v_nSerial)||v_SheetType||v_ShopID||'的记录';
               raise_application_error(-20002, v_Msg);

End;

v_DateStr := TO_CHAR((SYSDATE), 'YYYYMMDD') ;
v_myShopID := v_Shopid;

If v_nSerial < 10000 Then
v_SheetID := v_myShopID || v_DateStr || LPAD(to_char(v_nSerial), 4, ‘0’);
End if;

commit;

End TL_GetTestID;