Форум: "Базы";
Текущий архив: 2002.08.15;
Скачать: [xml.tar.bz2];
ВнизБаг с хранимой процедурой Найти похожие ветки
← →
Black Cat (2002-07-24 10:53) [0]Второй день маюсь с хранимой процедурой, где-то баг, не пойму где.
Процедура отрабатывается, все как-бы нормально, баг выползает в
момент дисконнекта - происходит подвисание проги (причем не важно,
откуда процедура вызывается - из дельфей или SQL браузера).
Текст процедуры:
CREATE OR REPLACE PROCEDURE "UPHG"."INSERT_RL_DATA"(sm_num number,sm_id number, sm_day date) as
cursor oprtimes is
select * from rl_t5 order by rl_t5.times desc;
cursor par is
select nobj4 from rl_t4 where rl_t4.work="Y";
count_in number;
w_day date;
wd varchar2(30);
begin
count_in:=0;
for tm in oprtimes loop
if tm.nobj7=sm_num then
if count_in=0 then count_in:=1;
end if;
if count_in=1 then w_day:=sm_day;
else w_day:=sm_day+1;
end if;
wd:=to_char(w_day,"dd.mm.yyyy")||" "||tm.times;
w_day:=to_date(wd,"dd.mm.yyyy hh24:mi");
for pr in par loop
insert into rl_t6
values (w_day, sm_id, pr.nobj4,null,null,null);
end loop;
else
if count_in=1 then count_in:=2;
end if;
end if;
end loop;
end;
← →
Johnmen (2002-07-24 11:09) [1]А почему думаешь, что дело в ХП ?
← →
Black Cat (2002-07-24 11:28) [2]
> Johnmen
Я уже не знаю, в чем дело, но трабла проявляется только после вызова ХП (все триггеры отключены). Если вызывать в дельфях, то при дисконнекте (при выходе из проги) валится сообщение "невозможно получить текст сообщения для ORA-00600".
← →
dimis (2002-07-24 11:30) [3]Мое мнение, не претиндующее на правильность
Oracle не пишет напрямую в таблицы
он сначала пишет в cashe.
при disconnect он пытается выполнить коммит, а т.к. инсертов много он задумывается.
Попробуй вставить в конец процедуры commit;
← →
Black Cat (2002-07-24 12:21) [4]В том-то и дело,что commit абсолютно не спасает
← →
Johnmen (2002-07-24 12:30) [5]Как делается дисконнект ?
← →
Jim (2002-07-24 12:39) [6]А пробовал переписать процедуру без применения цикла с курсором, т.е. явно открывать и закрывать курсоры?
может поможет...:-\
← →
Bachin (2002-07-24 12:41) [7]ORA-00600 internal error code, arguments: [num], [?], [?], [?], [?], [?]
Cause: This is a catchall internal error message for Oracle program exceptions. It indicates that a process has met a low-level, unexpected condition.
Various causes of this message include:
time-outs
file corruption
failed data checks in memory
hardware, memory, or I/O errors
incorrectly restored files
The first argument is the internal message number. Other arguments are various numbers, names, and character strings. The numbers may change meanings between different versions of the Oracle Server.
Action: Report this error to customer support after gathering the following information:
events that led up to the error
the operations that were attempted that led to the error
the conditions of the operating system and database at the time ofthe error
any unusual circumstances that occurred before receiving theORA-00600 message
contents of any trace files generated by the error
the relevant portions of the Alert file
Copyright (C) 1995, Oracle Corporation
← →
Nonam (2002-07-24 13:03) [8]Попробуй добавить в процедуру обработчик исключения OTHERS и возврати текст ошибки при помощи функции SQLERRM. Вообще, ORA-00600 - это внутренняя ошибка и Oracle советует обратится в службу техподдержки.
← →
roottim (2002-07-24 13:14) [9]не пробовал сделать трассировку в PL/SQL Explorer
← →
Black Cat (2002-07-25 09:31) [10]Всем спасибо за сочувствие, пришел к выводу, что это приколы сервака (Oracle 8.1.5 на w2k server) мать-его :(), давно руки чесались его убить, теперь отступать некуда. На 8.1.7 (w2k server) все работает как часы.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.08.15;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c