Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Проблемы с MERGE  [new]
Daphne
Member

Откуда: Россия
Сообщений: 298
Доброе утро, господа Ораклисты! У меня есть код:
merge into rep_exp_pel_dnd epd
using (select t.nomer_produkta nomer_produkta,
t.znah_rashoda znah_rashoda,
t1.nomer_agregata nomer_agregata,
decode(t1.NOMER_AGREGATA,'1',2010||t1.ZN_ATR_RASHOD,
'2',2020||t1.ZN_ATR_RASHOD,
'3',2030||t1.ZN_ATR_RASHOD,
'4',2040||t1.ZN_ATR_RASHOD) num_bin,
to_number(to_char(t.DATA_NACH_RASHODA+ 4/24, 'DD'))tec_sut
from rep_rashod_materialov t,
rep_atributy_rashod t1
where t1.KOD_ATR_RASHOD='3'
and t.NOMER_PRODUKTA=t1.NOMER_PRODUKTA
and t.KOD_AGREGATA=t1.KOD_AGREGATA
and t.KOD_OPERACII=t1.KOD_OPERACII
and t.NN=t1.NN
and t.N_RASHOD=t1.N_RASHOD
and t.NOMER_AGREGATA=t1.NOMER_AGREGATA) osk
on (epd.num_fusing=osk.nomer_produkta and
epd.num_agreg=osk.nomer_agregata and
epd.num_bin=osk.num_bin and
epd.num_tech_sut=osk.tec_sut)
when matched then update set epd.val_exp_pel=osk.znah_rashoda
when not matched then insert(epd.num_fusing,
epd.val_exp_pel,
epd.num_agreg,
epd.num_bin,
epd.author_rec,
epd.date_rec,
epd.num_tech_sut)
values(osk.nomer_produkta,
osk.znah_rashoda,
osk.nomer_agregata,
osk.num_bin,
user,
sysdate,
osk.tec_sut);
Первый раз он вполняется хорошо, без проблем. Но вот во второй раз вылетает ошибка - неустойчивый набор данных в исходной таблице. Я подозреваю. что возможно он как-то неверно понимает селект... Подскажите пожалуйста в чем дело. Заранее благодарна!
select t.nomer_produkta nomer_produkta,
t.znah_rashoda znah_rashoda,
t1.nomer_agregata nomer_agregata,
decode(t1.NOMER_AGREGATA,'1',2010||t1.ZN_ATR_RASHOD,
'2',2020||t1.ZN_ATR_RASHOD,
'3',2030||t1.ZN_ATR_RASHOD,
'4',2040||t1.ZN_ATR_RASHOD) num_bin,
to_number(to_char(t.DATA_NACH_RASHODA+ 4/24, 'DD'))tec_sut
from rep_rashod_materialov t,
rep_atributy_rashod t1
where t1.KOD_ATR_RASHOD='3'
and t.NOMER_PRODUKTA=t1.NOMER_PRODUKTA
and t.KOD_AGREGATA=t1.KOD_AGREGATA
and t.KOD_OPERACII=t1.KOD_OPERACII
and t.NN=t1.NN
and t.N_RASHOD=t1.N_RASHOD
and t.NOMER_AGREGATA=t1.NOMER_AGREGATA) osk
9 сен 08, 08:43    [6161450]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с MERGE  [new]
TiG
Member

Откуда:
Сообщений: 780
Daphne
вылетает ошибка - неустойчивый набор данных в исходной таблице
У вас несколько строк из запроса под USING мапятся на одну и ту же строку в таблице rep_exp_pel_dnd. Они должны быть уникальны по набору полей указанных в ON. Ошибка вылетает только при втором запуске потому что при первом они проходят по условию NOT MATCHED и просто инсертятся в таблицу, а при втором - уже по MATCHED и пытаются несколько раз проапдейтить одну и ту же строку.
9 сен 08, 09:49    [6161669]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с MERGE  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Запущенный случай?..
9 сен 08, 09:52    [6161690]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с MERGE  [new]
Daphne
Member

Откуда: Россия
Сообщений: 298
Вы не наблюдательны. А жаль... Если собираешься отвечать на вопрос, в него нужно вчитаться. Почему человек, который ответил перед вами это понял, а вы нет.
10 сен 08, 15:08    [6169312]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с MERGE  [new]
Серафимный Шестикрыл
Member [заблокирован]

Откуда: С луны свалился
Сообщений: 2922
Daphne
Вы не наблюдательны.


С больной головы на здоровую ?
10 сен 08, 15:12    [6169335]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить