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

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

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

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

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

Код: plsql
1.
with t as (select 1 id from dual where rownum < 1)  select max(id) from t
...
Рейтинг: 0 / 0
Борьба с no data found
    #39305358
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
Борьба с no data found
    #39305570
AnSi_Sr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стромпрстен,

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

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

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

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


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