2016-07-06 4 views
0

Я написал некоторую логику, чтобы определить, подходит ли кодовое (докторское биллинг) для пациента. Я написал некоторую логику, чтобы перебрать записи и поместить в столбец идентификатор правильного CP (поставщика обслуживания), который заслуживает kcode. По какой-то причине последняя запись или последние 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' после 'UPDATE tmp_kcodes SET SHOULD_GET = setCP_ID WHERE setPTNT_ID = PTNT_ID ; ', чтобы посмотреть, когда и по какой именно будет обновляться ... – Avishek

ответ

0

Вопрос заключается в том, что вы только обновить SHOULD_GET столбец после вы обработанную определенного пациента (данные пациента 20092469 обновляется, когда цикл извлекает запись пациента первой 20092491). Для последнего пациента это, очевидно, не может быть, состояние 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» будет активировано и для последнего пациента.

Смежные вопросы