2016-02-27 85 views
-3

我有一個存儲過程只使用SELECT語句(通過使用其他存儲過程)求和和檢索數據。在這些存儲過程中沒有更新或插入,當然所有涉及的數據都是靜態的。這個主存儲過程返回double。奇怪的是,如果我執行它幾次,通常3到4次之後,結果與前3 - 4次結果不同,然後繼續執行它。PostgreSQL中的查詢結果不一致?

我想它的,因爲計算機精度問題,但結果仍在100萬的差別可高達4〜8

+0

你能分享你的代碼嗎? – Mureinik

+0

http://pastebin.com/qtDyjufU – Mideel

+0

你好米蒂爾,歡迎來到SO。查看關於使用[最小化,完整且可驗證的示例]提問的指導(http://stackoverflow.com/help/mcve)。否則,幾乎不可能給你一個正確的答案。 – Patrick

回答

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