2014-09-23 2 views
0

Я работаю с операцией слияния, как в этом примере:Oracle слияния и таблицы сторонних

http://docs.oracle.com/cd/E11882_01/server.112/e26088/statements_9016.htm

Как я могу сделать вставку в таблицу третьей стороны внутрь «при сопоставлении» и «когда не совпадает» положение?

UPDATE: Возможно ли установить некоторые флаги внутри этих статей? Для его использования на следующих этапах процедуры - для выполнения вставки ...

+0

Непонятно, что вы пытаетесь сделать. Вы имеете в виду только таблицу в другой схеме, которую вы можете указать в разделе 'in'? Или что вы хотите вставить в таблицу, которая отличается от цели «в»? Что бы не имело смысла и предлагалось использовать неправильный вид оператора ... –

+0

Я хочу выполнить слияние и параллельную вставку данных в другую таблицу с объединенным/вставленным идентификатором записи – mgurov

+0

Это не намного яснее .. вы хотите «слиться в table_a ...», но вставить в * другую таблицу *? Тогда это не слияние. –

ответ

0

Учитывая, что вы хотите воспользоваться предложением MERGE на самом деле UPDATE таблицей, ваше предложение о флажках - довольно хорошая идея ИМО. Предположим, вы хотите объединить TAB_A и TAB_B в TAB_C, вам нужно было бы до ALTER TABLE TAB_A ADD (FLAG VARCHAR2(1));.

Тогда MERGE бы состоит в создании флаги:

MERGE INTO tab_a a 
USING (tab_b) b 
ON (...) 
WHEN MATCHED THEN UPDATE SET a.flag = 'U' 
WHEN NOT MATCHED THEN INSERT (..., FLAG) VALUES (..., 'I') 
; 

Вы можете обновить TAB_C как:

INSERT INTO tab_c 
SELECT ... 
FROM tab_a a 
WHERE a.flag = 'I'; 

и того же рода UPDATE для линий с флагом «U». Не забудьте сбросить флаг в TAB_A, когда вы закончите!

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