在PostgreSQL中使用相同查询的结果不一致?

时间:2016-02-27 09:02:20

标签: database postgresql stored-procedures

我有一个存储过程,它只使用SELECT语句对数据进行求和(通过使用其他存储过程)。这些存储过程中根本没有更新或插入,当然所有涉及的数据都是静态的。此主存储过程返回double。奇怪的是,如果我执行它几次,通常在3-4次后,结果与前3-4个结果不同,那么它仍然保持这样,尽管我继续执行它。

我认为这是因为计算机精度问题,但结果仍然低于100万,差异可达4到8。

1 个答案:

答案 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