Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Старое тело пакета  [new]
recompiler
Guest
Добрый день. Есть package, в котором есть такая функция:
function abc(
  p_date_from            in DATE,
  p_date_to              in DATE, 
  cuid_author            in NUMBER
) return NUMBER; 

function abc(p_date_from in DATE, p_date_to in DATE, cuid_author in NUMBER) return NUMBER
is
  v_id NUMBER;
begin
  return 0;  
end;

Вызов:
declare 
  i NUMBER;
begin
  i := task_create.abc(to_date('10.10.2010', 'dd.mm.yyyy'), to_date('10.10.2010', 'dd.mm.yyyy'), 0);
  dbms_output.put_line(i);
end;


Сейчас тело состоит из return 0; Раньше была логика, в процессе которой вылетал эксепшн в строке 14.
Заменил старое тело на новое. Открываю сессию делаю первый вызов - вылетает эксепшн в строке 14 - сейчас в этой строке совсем другой метод. В этой же сессии делаю второй вызов - функция отрабатывает нормально - возвращает ноль.
Если открыть новую сессию, то опять: первый вызов - эксепшн, второй - нормальный. Менял название у функции - все остается по-плохому. Куда тут можно смотреть?
16 янв 15, 15:42    [17128574]     Ответить | Цитировать Сообщить модератору
 Re: Старое тело пакета  [new]
dmdmdm
Member

Откуда: Нижний Новгород
Сообщений: 1644
Сейчас тело состоит из return 0;


Заменил старое тело на новое.


делаю первый вызов - вылетает эксепшн в строке 14 - сейчас в этой строке совсем другой метод.


Сдается мне, вы не все нам рассказываете.
16 янв 15, 15:47    [17128621]     Ответить | Цитировать Сообщить модератору
 Re: Старое тело пакета  [new]
recompiler
Guest
Старое тело это инсерт, в котором вылетал эксепшн на строке 14. Новое тело - return 0;
При первом вызове в рамках одной сессии вылетает экспешн в строке 14, при втором функция возвращает 0.
В каждой новой сессии выполняется этот сценарий. То есть первый вызов кидает как бы из "старого кода".
16 янв 15, 15:52    [17128673]     Ответить | Цитировать Сообщить модератору
 Re: Старое тело пакета  [new]
blkangel
Member

Откуда:
Сообщений: 1982
Скорее всего ошибка в строке 14 другого пакета, например системного "dbms_output"
Эксепшен полностью.
И желательно бы саму функцию. КАК ВАРИАНТ идет вычисление разницы между датами текущей и входящей и поэтому в зависимости от времени запуска то выдается ошибка, то нет.
16 янв 15, 15:53    [17128689]     Ответить | Цитировать Сообщить модератору
 Re: Старое тело пакета  [new]
recompiler
Guest
Разобрался - я му**к :)
В заголовке пакета есть пакетная переменная с типом number и ей присваивалась строка. PL/SQL developer перекидывал на 14 строку тела пакета, а не хедера.
16 янв 15, 15:58    [17128732]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить