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

Откуда:
Сообщений: 15
Доброго дня!
Столкнулся с каким-то совершенно необъяснимым поведением системы:
Есть запрос типа

insert into table2 (id, dDate,...)select t.id, t.dDate,... from table1 t, ... where pkg.func() = 1 and ... 


ошибка выглядит примерно так: в table1 из которой происходит отбираются 2 поля: id и dDate, лежат данные типа:
1 01.02.2012
2 02.02.2012

а вот в результирующей встречаются:
1 01.02.2012 - корректная
2 01.02.2012 - неправильная и непонятно как вообще получающаяся.

Дальше вообще начинаются чудеса: если включить трассировку, то ошибка исчезает, если отключить - через какое-то время появляется, перестройка индексов, которые включают в себя дату и id не помогает.
Единственная особенность этого запроса - наличие пакетной функции pkg.func() которая кэширует результаты в переменной пакета, если ее заранее вычислять во временную таблицу и таблицу использовать в запросе - все снова хорошо.
Я готов отказаться от использования функции, но объясните, как вообще возможна такая вставка несуществующих значений?
1 мар 12, 16:19    [12178050]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение системы  [new]
Мимошол
Guest
vJobываем,

А чего удивляешься? Cartesian join небось где-то проспал.
1 мар 12, 22:39    [12180165]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение системы  [new]
vJobываем
Member

Откуда:
Сообщений: 15
Мимошол
vJobываем,

А чего удивляешься? Cartesian join небось где-то проспал.


В том-то и засада, что нет - таблица в запросе фигурирует один раз и с собой не соединяется, оба значения берутся из одной таблицы и в ней таких комбинаций нет. Непонятно даже в какую сторону это копать и какими средствами.
2 мар 12, 09:38    [12181141]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение системы  [new]
AlexFF__|
Member

Откуда:
Сообщений: 2854
vJobываем,

Ну так записать значения переменной пакета в таблицу и посмотреть, что там насчиталось.
2 мар 12, 11:07    [12181744]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить