Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Борьба с no data found / 12 сообщений из 12, страница 1 из 1
05.09.2016, 11:34:42
    #39303705
misha1973
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с no data found
Я последнее время использую nvl(max(col1), 0) в запросе select into. Это норм? Или нельзя так, и лучше через exception? Меня терзают смутные сомнения...
...
Рейтинг: 0 / 0
05.09.2016, 11:36:54
    #39303710
AnSi_Sr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с no data found
misha1973Я последнее время использую nvl(max(col1), 0) в запросе select into. Это норм? Или нельзя так, и лучше через exception? Меня терзают смутные сомнения...
Можно, это распространенный прием, nvl(max(...), 0) from dual where exists (...)
...
Рейтинг: 0 / 0
05.09.2016, 12:05:18
    #39303744
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с no data found
misha1973,

Некоторые полагают, что эффективнее использовать курсор и фетч, ссылаясь что "второй фетч" для too_many_rows потребляет ресурсы. Отсюда и вариант работы с no_data_found.
Про no_data_found, стоит отметить, может быть не только эффективнее, но и корректнее, не доводить до необходимости проверки отдельным селектом.
Если тебя волнует, нормальный ли ты, лучше обратиться к психиатру.
...
Рейтинг: 0 / 0
05.09.2016, 12:29:28
    #39303759
misha1973
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с no data found
1) Много пафоса.
2) Где хоть слово я написал про проверку существования значения отдельным селектом? Понятно, что это ноу гуд. Вопрос был только в эффективности вычисления агрегата по сравнению с отловом исключения и присваивания значения по умолчанию
...
Рейтинг: 0 / 0
05.09.2016, 14:50:06
    #39303859
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с no data found
misha1973Где хоть слово я написал про проверку существования значения отдельным селектомВ заголовке темы.
...
Рейтинг: 0 / 0
06.09.2016, 12:24:54
    #39304361
ddddgggg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с no data found
misha1973, как вариант

select
coalesce
(
(select col1 from ...),
0
) into val from dual;
...
Рейтинг: 0 / 0
07.09.2016, 12:09:42
    #39305066
Борьба с no data found
misha1973,

достаточно max(col1). Null - это уже data found
...
Рейтинг: 0 / 0
07.09.2016, 15:01:53
    #39305260
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с no data found
Стромпртстен, да ну?

На каком уровне дата фаунд?

Код: plsql
1.
with t as (select 1 id from dual where rownum < 1)  select max(id) from t
...
Рейтинг: 0 / 0
07.09.2016, 16:58:09
    #39305358
Борьба с no data found
dmdmdm,

Ты не старался :)
Код: plsql
1.
2.
3.
4.
5.
6.
SQL> select count(*) from (select max(id) from (select 1 id from dual where rownum < 1))
  2  /

 COUNT(*)
---------
        1
...
Рейтинг: 0 / 0
08.09.2016, 04:31:41
    #39305570
AnSi_Sr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с no data found
Стромпрстен,

Внезапно.
И какой смысл в этом count(*) = 1 для пустого запроса.
...
Рейтинг: 0 / 0
08.09.2016, 05:27:52
    #39305579
внезапно
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с no data found
AnSi_Sr,

Читаем что возвращают агрегирующие функции и просвещаемся
...
Рейтинг: 0 / 0
08.09.2016, 06:24:29
    #39305593
AnSi_Sr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с no data found
внезапноЧитаем что возвращают агрегирующие функции и просвещаемся
Спасибо, обязательно.

Поскольку дискуссия заходит в тупик, резюмирую.
В теме речь идет об использовании конструкции для проверки существования записи в таблице по идентификатору.
Есть такие варианты решения вместо count(*):
- выбрать по идентификатору с обработкой NDF;
- открыть курсор и профетчить его один раз;
- использовать конструкцию NVL(MAX(1), 0);

Заявленный в процессе обсуждения тезис, что NULL - это какой-то DATA FOUND и достаточно простого MAX(1), а также последующая демонстрация использования противоречат постановке задачи, поскольку возвращают 1 вместо 0 для пустого запроса.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Борьба с no data found / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]