![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Oracle9. ORA-03113
k2 © (2005-10-11 08:11:00)Случайно столкнулась с такой проблемой:
Небольшой запрос выполняется, возвращает мелкое количество строк(до десятка), однако если его обернуть, причем с тем же полями без группировок или ещё каких изменений получаем ORA-03113.
исходный запрос:
select table1.field1 f1,table1.field2 f2,table2.field1 f3 from table1, table2 where [any_conditions]
обернутый:
select f1, f2, f3 from (select table1.field1 f1,table1.field2 f2,table2.field1 f3 from table1, table2 where [any_conditions])
ошибка возникает стабильно, на разных машинах и под разными пользователями (запрос один и тот же)
клиент toad, но проверила под sql*plus - то же самое.
Подскажите где и как можно поискать источник ошибки?
Seg (2005-10-12 11:17:00) [1]Мой ICQ
Вау, а говорил, что женатый...
ANB (2005-10-12 11:15:00) [2]
> k2 © (12.10.05 10:57) [41]
- тогда спасибо.
ЗЫ. Ща тут все тереть начнут, так как флудим. Мой ICQ# 285340244
k2 (2005-10-12 10:57:00) [3]я незаради замуж выйти :о) я просто так подлизываюсь :)))
ANB (2005-10-12 10:54:00) [4]
> k2 © (12.10.05 10:31) [39]
- я женат. :)
k2 (2005-10-12 10:31:00) [5]1) представление из исходного запроса, выборка из него - все работает
2) а вот хранимка использует еще некоторые, при раскручивании получился монстр и ошибка осталась :) поставим автору на вид (нет совсем обработки ошибок), пусть ищет
спасибо большое за советы и обсуждение, както в голову не пришло раскручивать в такой ситуации, процедуры достаточно не новые
to ANB © Вы мой герой :о)
Seg (2005-10-11 16:48:00) [6]- напиши примерчик такой функции ?
Я уже приводил пример простой функции, которая возвращает строку, разделенную через запятую в ветке про издательства и их авторов.
ANB (2005-10-11 16:45:00) [7]
> Seg (11.10.05 16:43) [35]
- нормальная конструкция, вполне рабочая. Иногда не стоит такие в WHERE загонять.
ANB (2005-10-11 16:44:00) [8]
> Sergey13 © (11.10.05 16:36) [33]
- я программист в отделе тестирования. Производственная необходимость.
ANB (2005-10-11 16:43:00) [9]
> можно вынести в отдельную функцию, которая возвращает набор
> ID через запятую.
> <Цитата>
- напиши примерчик такой функции ?
Seg (2005-10-11 16:43:00) [10]А эту конструкцию нельзя сделать как вызов таблицы с ограничением в общем разделе where?
(SELECT NVL(jan_fact_price,0) price, prass_id,YEAR FROM BD_DOC_STRINGS_FACT_PRICE WHERE YEAR=2005) fact_pr
Sergey13 (2005-10-11 16:36:00) [11]2[31] ANB © (11.10.05 16:31)
> - у меня на компе 7 экземпляров ораклы восьмой развернуто. И на серваке еще штук 6.
Солишь их? Или коллекционер? 8-)
Seg (2005-10-11 16:35:00) [12]С возвращением курсора в Оракле действительно проблемы.
Но в процедуре можно раскидать запрос по подзапросам и посмотреть, как все работает.
Например подзапрос
AND bd_doc_st.resource_mng_id IN (
SELECT ID
FROM MTM_RESOURCE_MANAGERS
WHERE manager_id IN (SELECT * FROM TABLE (CAST (Logistic_Units.group_res_managers('60204',',') AS boss_cxp.vtable))))
можно вынести в отдельную функцию, которая возвращает набор ID через запятую.
ANB (2005-10-11 16:31:00) [13]
> Все верно, но, если в 8-ке ручками не создать n-е количество
> этих самых сегментов, то ничего работать не будет
- у меня на компе 7 экземпляров ораклы восьмой развернуто. И на серваке еще штук 6. И ни на одной ничего не создавал. И все работает.
ANB (2005-10-11 16:30:00) [14]
> Seg (11.10.05 16:19) [28]
- не факт. В ХП может еще больше поломаться. Плюс в оракле не так просто написать ХП, возвращаюшую набор данных.
Sergey13 (2005-10-11 16:30:00) [15]2[25] DenK_vrtz © (11.10.05 13:02)
> а в 9-ке об этом не надо заботиться, так как для этих целей создано специальное ТП
Спорить не буду, ибо не юзал, но сомневаюсь. И в 8 такое ТП создается, если ставить учебную БД при установке. При создании ручками - что укажешь, то и будет.
Seg (2005-10-11 16:19:00) [16]- для чего ?
Чтобы заработало.
ANB (2005-10-11 16:14:00) [17]
> Seg (11.10.05 16:12) [26]
- для чего ?
> создано специальное ТП (не помни как называется, ну не админ
> я :) )
- этим и должен админ заниматься. Наше дело найти ошибку и попинать его.
Seg (2005-10-11 16:12:00) [18]Почему бы исходный запрос не положить в ХП, или хотя бы часть запроса?
DenK_vrtz (2005-10-11 13:02:00) [19]> Sergey13 © (11.10.05 11:31) [21]
> Их и в 8 нет, за исключением 1 с именем SYSTEM в одноименном
> ТП. Все остальные создается отдельно.
Все верно, но, если в 8-ке ручками не создать n-е количество этих самых сегментов, то ничего работать не будет, а в 9-ке об этом не надо заботиться, так как для этих целей создано специальное ТП (не помни как называется, ну не админ я :) )
Val (2005-10-11 11:54:00) [20]+ANB пробуем также
...
SELECT /*+ index (bd_doc )*/
1 nw,
2 tn,
3 jan_summ ...
пробуем также на основе исходного запроса создать обзор, и выборку из него.