Невозможно обновить столбцы таблицы с помощью параметров связывания с помощью SQL-разработчика - PullRequest
0 голосов
/ 09 ноября 2018

Следующая инструкция выбора возвращает одну строку:

SELECT *
FROM CM_APOLLO_DET
WHERE
    CM_APOLLO_DET.DETAIL_ID = TRIM(:detailId) AND
    CM_APOLLO_DET.HEADER_ID IN (SELECT HEADER_ID FROM CM_APOLLO_HDR
                                WHERE TRIM(FILE_NAME) = TRIM(:fileName));

Значения параметров связывания следующие:

detailId: 775686609762
filename:sample3.txt

но когда я запускаю следующий оператор обновления, он обновляет ноль строк.

UPDATE CM_APOLLO_DET
SET CM_APOLLO_DET.DIVISION = :div
WHERE
    CM_APOLLO_DET.DETAIL_ID = TRIM(:detailId) AND
    CM_APOLLO_DET.HEADER_ID IN (SELECT HEADER_ID FROM CM_APOLLO_HDR
                                WHERE TRIM(FILE_NAME) = TRIM(:fileName));

div=2030
detailId: 775686609762
filename:sample3.txt

Это обновление, где условие такое же, как и в приведенном выше утверждении.

1 Ответ

0 голосов
/ 09 ноября 2018

Вы можете попробовать ниже, используя существующий

update CM_APOLLO_DET set CM_APOLLO_DET.DIVISION=:div 
where CM_APOLLO_DET.DETAIL_ID=trim(:detailId) and 
exists (SELECT 1 from 
   CM_APOLLO_HDR where CM_APOLLO_DET.HEADER_ID=CM_APOLLO_HDR.HEADER_ID  
   and trim(FILE_NAME)=trim(:fileName)
);
...