У меня есть оператор обновления, который динамически генерируется внутри пакета.Oracle - Обновить столбец, только если источник не является нулевым.
мне нужно обновить target_field2
только тогда, когда source_field2
является NOT NULL
, если NULL
затем сохранить target_field2
как есть.
Надеюсь, что на это будет легко ответить. Это динамический раздел в беспокойстве:
ELSIF cur_field_to_update.FIELD_NAME = 'SOURCE_FIELD2'
THEN
v_update_values :=
v_update_values
|| ', CASE WHEN NVL('''
|| data_cur.IND_TYPE
|| ''', NULL) <> ''D'' THEN NULL ELSE TO_NUMBER(NVL('
|| cur_field_to_update.FIELD_NAME
|| ','
|| TARGET_FIELD2
|| ')) END';
который заканчивается похожий ..
UPDATE target_table
SET (target_field1,target_field2) =
(SELECT source_field1,
CASE WHEN NVL('A',NULL) <> 'A'
THEN NULL
ELSE TO_NUMBER(NVL(source_field2,target_field2))
END
FROM source_table);
ваш вопрос, кажется, не ясно, пожалуйста, напишите правильный образец данных и ожидаемый результат – scaisEdge
я разместил первый ответ, дайте мне знать, если это WAHT вам нужно – scaisEdge
попробовать эту таблицу обновления набора target_field2 = (случай, когда source_field2 является not null then 1 else target_field2) –