我有一个存储过程,它只使用SELECT语句对数据进行求和(通过使用其他存储过程)。这些存储过程中根本没有更新或插入,当然所有涉及的数据都是静态的。此主存储过程返回double。奇怪的是,如果我执行它几次,通常在3-4次后,结果与前3-4个结果不同,那么它仍然保持这样,尽管我继续执行它。
我认为这是因为计算机精度问题,但结果仍然低于100万,差异可达4到8。
答案 0 :(得分:0)
问题很可能在这里:
IF (FOUND) THEN
vSaldo := vRecSearchSaldoAwal.balance;
RAISE NOTICE 'Balance Adjustment: %', vRecSearchSaldoAwal.balance;
...
SELECT (_dateStart - INTERVAL '1 day'), NULL, NULL, vSaldo, TX_STOCKADJ, 'Saldo Sebelumnya' INTO vRetval;
RETURN NEXT vRetval;
ELSEIF (NOT FOUND) THEN
vSaldo := SumQtyBeginningBal(_idproduct, _idGudang);
...
短语ELSEIF (NOT FOUND) THEN
查看FOUND
值,该值已由IF / IFELSE块中的最后一个SELECT
语句设置。您可能希望改为使用简单的ELSE
。