2016-07-06 127 views
0

我寫了一些邏輯來確定kcode(醫生帳單)是否對患者正確。我編寫了一些邏輯來循環記錄,並在列中放置了值得kcode的正確CP(護理提供者)的ID。由於某種原因,最後一條記錄或最後2條記錄不符合邏輯。這是我的邏輯代碼(在光標內):從公式中刪除最後一條記錄

OPEN kcode_count; 
kcode_loop: LOOP 

    FETCH kcode_count INTO dbPTNT_ID, dbCP_ID, dbSEEN, holder, dbDATE, holder2; 
    IF done THEN 
     LEAVE kcode_loop; 
    END IF; 

    IF dbPTNT_ID <> setPTNT_ID THEN 
     IF setPTNT_ID <> 0 THEN 
      UPDATE tmp_kcodes 
      SET SHOULD_GET = setCP_ID 
      WHERE setPTNT_ID = PTNT_ID; 
     END IF; 
     SET setPTNT_ID = dbPTNT_ID; 
     SET setCP_ID = dbCP_ID; 
     SET setSEEN = dbSEEN; 
     SET setDATE = dbDATE; 

    ELSEIF dbSEEN > setSEEN THEN 
      SET setCP_ID = dbCP_ID; 
      SET setSEEN = dbSEEN; 
      SET setDATE = dbDATE; 

    ELSEIF dbSEEN = setSEEN THEN 
     IF dbDATE < setDATE THEN 
      SET setCP_ID = dbCP_ID; 
      SET setSEEN = dbSEEN; 
      SET setDATE = dbDATE; 
     END IF; 
    END IF; 


END LOOP kcode_loop; 
CLOSE kcode_count; 

如下所示,在SHOULD_GET列中,最後兩個記錄產生NULL。有什麼理由?

enter image description here

+0

您已經在一個塊中使用過'SET SHOULD_GET',它可能不會進入該塊,請檢查您的邏輯。 – Avishek

+0

@AvishekChat這是因爲我希望它只是更新它通過每個具體患者的ID –

+0

的'更新後,你應該把'print'或'臨時調試table'走後tmp_kcodes SET SHOULD_GET = setCP_ID WHERE setPTNT_ID = PTNT_ID ;',看什麼時候,什麼時候更新...... – Avishek

回答

0

的問題是,你只更新SHOULD_GET後您處理一個病人的情況(當循環取一號20092491病人的記錄病人20092469的數據被更新)。對於最後一名患者來說,這顯然不會發生,因此dbPTNT_ID <> setPTNT_ID條件永遠不會得到滿足。

乍一看我會重複

IF setPTNT_ID <> 0 THEN 
     UPDATE tmp_kcodes 
     SET SHOULD_GET = setCP_ID 
     WHERE setPTNT_ID = PTNT_ID; 
    END IF; 

塊kcode_loop結束後立即更新正在處理的最後一個病人。

另一種解決方案可能是在遊標使用聯合返回的結果集的末尾附加一個「虛擬」行,這樣也會爲最後一位患者觸發dbPTNT_ID <> setPTNT_ID條件。

相關問題