2016-07-06 4 views
0

weggelassen. Ich schrieb eine Logik, um festzustellen, ob ein Kcode (Arztabrechnung) für einen Patienten korrekt ist. Ich schrieb eine Logik, um die Aufzeichnungen durchzulaufen und in die Spalte die ID des korrekten CP (Pflegedienstleisters) zu setzen, der den kcode verdient. Aus irgendeinem Grund folgen der letzte Datensatz oder die letzten 2 Datensätze nicht der Logik. Dies ist meine Logik-Code (in einem Cursor):Der letzte Datensatz wurde aus Formel

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; 

Wie unten zu sehen ist, in der SHOULD_GET Spalte, die letzten beiden Datensätze erzeugen NULL. Gibt es einen Grund warum?

enter image description here

+0

Sie haben SET SHOULD_GET nur in einem Block verwendet, es könnte nicht in diesen Block gehen, bitte überprüfen Sie dies anhand Ihrer Logik. – Avishek

+0

@AvishekChat Das ist, weil ich es nur aktualisiert werden soll, nachdem es –

+0

durch jeden bestimmten Patienten-ID gegangen ist Sie eine 'print' oder' Temp Debug table' nach dem 'UPDATE tmp_kcodes SET SHOULD_GET = setCP_ID WHERE setPTNT_ID = PTNT_ID setzen sollten ; ', um zu sehen, wann und was genau aktualisiert wird ... – Avishek

Antwort

0

Das Problem ist, dass Sie nur SHOULD_GET Spalte nach Sie einen bestimmten Patienten verarbeitet aktualisieren (Daten Patienten 20.092.469 der aktualisiert wird, wenn die Schleife der Aufzeichnung des ersten 20.092.491 Patienten holt). Für den letzten Patienten kann dies offensichtlich nicht passieren, die dbPTNT_ID <> setPTNT_ID Bedingung wird nie erfüllt sein. Auf den ersten Blick

würde ich wiederhole die

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

Block unmittelbar nach dem Ende des kcode_loop der letzte Patient in Bearbeitung zu aktualisieren.

Eine andere Lösung könnte sein, eine "Dummy" -Zeile am Ende des Resultsets anzuhängen, das vom Cursor über eine Union zurückgegeben wird. Auf diese Weise wird die Bedingung auch für den letzten Patienten ausgelöst.

Verwandte Themen