[Ora] Проблемы с функцией
От: Funny Rabbit Россия  
Дата: 12.11.19 10:17
Оценка:
Код функции
create or replace function F_GET_KOSGU(nrn in number) return varchar2 is
  nKOSGU varchar2(100);
begin

  select distinct m.sagngrp
    into nKOSGU
    from T m
   where m.nagent = nrn;

  return nKOSGU;

exception
  when no_data_found then
    return sqlerrm;
  
  when others then
    return sqlerrm;
end;


Вот так работает:

      
        select distinct m.sagngrp
          from T m
         where m.nagent = 9487598;


А вот так нет:
select F_GET_KOSGU(9487598)
  from dual


ORA-01403: no data found

Почему?
То что меня не убивает, делает меня умнее.
Отредактировано 12.11.2019 7:55 Funny Rabbit . Предыдущая версия . Еще …
Отредактировано 12.11.2019 5:08 Funny Rabbit . Предыдущая версия .
Re: [Ora] Проблемы с функцией
От: amironov79  
Дата: 12.11.19 04:26
Оценка: 4 (1)
Здравствуйте, Funny Rabbit, Вы писали:

FR>Почему?


На sql.ru не пробовал спросить?
Re: [Ora] Проблемы с функцией
От: Gt_  
Дата: 12.11.19 06:11
Оценка: +1
а мы типа угадать должны ошибку ?
нет таблицы, не совпадают типы, выдает несколько строк.
во первых поставь nrn in t.nagent%type, во вторых поставь MAX() вместо distinct
Re[2]: [Ora] Проблемы с функцией
От: Funny Rabbit Россия  
Дата: 12.11.19 07:57
Оценка:
Здравствуйте, Gt_, Вы писали:

Gt_>а мы типа угадать должны ошибку ?


ORA-01403: no data found

Gt_>нет таблицы, не совпадают типы, выдает несколько строк.


Все есть

Gt_>во первых поставь nrn in t.nagent%type, во вторых поставь MAX() вместо distinct


Ничего не выводит
То что меня не убивает, делает меня умнее.
Re: [Ora] Проблемы с функцией
От: Funny Rabbit Россия  
Дата: 12.11.19 10:31
Оценка:
Здравствуйте, Funny Rabbit, Вы писали:

Вопрос закрыт.
То что меня не убивает, делает меня умнее.
Re[2]: [Ora] Проблемы с функцией
От: TMU_1  
Дата: 15.11.19 08:05
Оценка:
FR>Вопрос закрыт.


В чем дело-то было?
Re[3]: [Ora] Проблемы с функцией
От: Funny Rabbit Россия  
Дата: 15.11.19 12:49
Оценка: +1
Здравствуйте, TMU_1, Вы писали:

FR>>Вопрос закрыт.



TMU>В чем дело-то было?



select distinct m.sagngrp
    into nKOSGU
    from T m
   where m.nagent = nrn;


Имя параметра совпадало с именем колонки таблицы.
То что меня не убивает, делает меня умнее.
Re[4]: [Ora] Проблемы с функцией
От: TMU_1  
Дата: 18.11.19 10:36
Оценка: 4 (1) +2
FR>Имя параметра совпадало с именем колонки таблицы.



Ахаха. У меня была мысль спросить об этом )
Натыкался на такое в свое время. С тех пор взял за правило всегда использовать префикс для аргументов и переменных,
ну типа v_nrn или p_nrn, это уж по вкусу. Во избежание конфликта имен.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.