Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Как в if проверить существование записи?  [new]
mod
Member

Откуда:
Сообщений: 2279
В функции необходимо проверить сущесвует ли запись name скажем Кукуев А.А. используя if. Как это можно реализовать?
2 июн 06, 15:41    [2735449]     Ответить | Цитировать Сообщить модератору
 Re: Как в if проверить существование записи?  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 117689
select count(*) into v_count 
from dual
where exists
(select null from scott.emp
 where ename = 'KUKUEV');
IF v_count > 0
THEN
-- Estj
ELSE 
-- Net
END IF;
2 июн 06, 15:44    [2735475]     Ответить | Цитировать Сообщить модератору
 Re: Как в if проверить существование записи?  [new]
Part
Member

Откуда: Краснодар
Сообщений: 187
2 dmidek
Я бы в большой нагруженной системе не стал так делать - рано или поздно можно получить проблемы
2 июн 06, 15:49    [2735517]     Ответить | Цитировать Сообщить модератору
 Re: Как в if проверить существование записи?  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 117689
Part
2 dmidek
Я бы в большой нагруженной системе не стал так делать - рано или поздно можно получить проблемы

Про большую нагруженную пока никто не говорил и что то мне подсказывает что это не тот случай.
А как бы Вы стали делать в функции ?
2 июн 06, 15:52    [2735557]     Ответить | Цитировать Сообщить модератору
 Re: Как в if проверить существование записи?  [new]
mod
Member

Откуда:
Сообщений: 2279
Я так по-началу и сам хотел сделать, но у меня вызвал опасение такой метод....
2 июн 06, 15:53    [2735564]     Ответить | Цитировать Сообщить модератору
 Re: Как в if проверить существование записи?  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 117689
mod
Я так по-началу и сам хотел сделать, но у меня вызвал опасение такой метод....

Чего боялись ?
2 июн 06, 15:55    [2735582]     Ответить | Цитировать Сообщить модератору
 Re: Как в if проверить существование записи?  [new]
mod
Member

Откуда:
Сообщений: 2279
Как-то не элегантно...
2 июн 06, 15:56    [2735590]     Ответить | Цитировать Сообщить модератору
 Re: Как в if проверить существование записи?  [new]
Takurava
Member

Откуда:
Сообщений: 1776
А почему не просто
select count(*) into v_count 
from scott.emp
 where ename = 'KUKUEV';
2 июн 06, 15:56    [2735594]     Ответить | Цитировать Сообщить модератору
 Re: Как в if проверить существование записи?  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 117689
Takurava
А почему не просто
select count(*) into v_count 
from scott.emp
 where ename = 'KUKUEV';

А зачем мне считать миллион записей с Кукуевым, если мне достаточно найти одну ?
2 июн 06, 15:56    [2735602]     Ответить | Цитировать Сообщить модератору
 Re: Как в if проверить существование записи?  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 117689
mod
Как-то не элегантно...

А мне нравится ...
2 июн 06, 15:59    [2735629]     Ответить | Цитировать Сообщить модератору
 Re: Как в if проверить существование записи?  [new]
ModelR
Member

Откуда: Нижний Новгород
Сообщений: 1798
Takurava
А почему не
как минимум
select count(*) into v_count 
from scott.emp
 where ename = 'KUKUEV'
 and rownum=1;
2 июн 06, 16:01    [2735641]     Ответить | Цитировать Сообщить модератору
 Re: Как в if проверить существование записи?  [new]
Takurava
Member

Откуда:
Сообщений: 1776
Элегантно уникальные ключи использовать
2 июн 06, 16:01    [2735647]     Ответить | Цитировать Сообщить модератору
 Re: Как в if проверить существование записи?  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 117689
Takurava
Элегантно уникальные ключи использовать

При чем тут уникальные ключи ? Нигде не сказано, что автор собирается делать с полученной информацией дальше. Может он как раз хочет, чтобы Кукуев был :) ?
2 июн 06, 16:05    [2735689]     Ответить | Цитировать Сообщить модератору
 Re: Как в if проверить существование записи?  [new]
Part
Member

Откуда: Краснодар
Сообщений: 187
Не элегантно потому что между анализом кол-ва записей и обработкой есть разрыв по времени. И в зависимости от данных с которыми мы работаем это может вылится в большие проблемы.
2 июн 06, 16:05    [2735694]     Ответить | Цитировать Сообщить модератору
 Re: Как в if проверить существование записи?  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 117689
Part
Не элегантно потому что между анализом кол-ва записей и обработкой есть разрыв по времени. И в зависимости от данных с которыми мы работаем это может вылится в большие проблемы.

Где говорится про обработку ? Я решаю задачу из сабжа ...
2 июн 06, 16:07    [2735714]     Ответить | Цитировать Сообщить модератору
 Re: Как в if проверить существование записи?  [new]
Takurava
Member

Откуда:
Сообщений: 1776
mod
В функции необходимо проверить сущесвует ли запись name скажем Кукуев А.А. используя if. Как это можно реализовать?

А действительно, зачем это надо?
2 июн 06, 16:19    [2735831]     Ответить | Цитировать Сообщить модератору
 Re: Как в if проверить существование записи?  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6951
dmidek
mod
Как-то не элегантно...

А мне нравится ...

все же интересно, exists быстрее чем rownum = 1? И если да, то почему? Вопрос именно теоретический...
2 июн 06, 16:22    [2735860]     Ответить | Цитировать Сообщить модератору
 Re: Как в if проверить существование записи?  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 117689
alex-ls
dmidek
mod
Как-то не элегантно...

А мне нравится ...

все же интересно, exists быстрее чем rownum = 1? И если да, то почему? Вопрос именно теоретический...

Хоть andrey_anonymous опять вероятно и совершенно справедливо вспомнит о кумирах, которых не надо сотворять , но
этой рекомендации мне вполне достаточно :)
2 июн 06, 16:41    [2736057]     Ответить | Цитировать Сообщить модератору
 Re: Как в if проверить существование записи?  [new]
maksim2020
Member

Откуда: оттуда
Сообщений: 113
mod
В функции необходимо проверить сущесвует ли запись name скажем Кукуев А.А. используя if. Как это можно реализовать?

Без if, но тоже вроде бы ничего:

DECLARE
i NUMBER;
BEGIN
BEGIN
SELECT 1
INTO i
FROM Table
WHERE NAME = 'Кукуев А.А.';
EXCEPTION WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20000,'no_data_found');
END;
END;

С уважением, Максим.
2 июн 06, 17:01    [2736194]     Ответить | Цитировать Сообщить модератору
 Re: Как в if проверить существование записи?  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18649
alex-ls
dmidek
mod
Как-то не элегантно...

А мне нравится ...

все же интересно, exists быстрее чем rownum = 1? И если да, то почему? Вопрос именно теоретический...

Честно говоря, подобные вопросы всегда ставят меня в тупик.
SQL statement - это не программа. Это декларация.
Поэтому сам вопрос лишен смысла.
"Скажите, какая из этих турпутевок самая быстрая?"
Да туроператор его знает. Смотря на чем и как повезут.

То же и с oracle - все зависит от того, как он Ваш запрос решит обработать.
Но ИМХО чем точнее Вы декларируете Ваши реальные цели, тем больше шансов у oracle эффективно решить задачу.
Чем умнее Вы себе кажетесь, пытаясь SQL программировать, тем скорее Ваши ожидания разойдутся с действительность.
ИМХО.
2 июн 06, 17:02    [2736197]     Ответить | Цитировать Сообщить модератору
 Re: Как в if проверить существование записи?  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 117689
maksim2020
mod
В функции необходимо проверить сущесвует ли запись name скажем Кукуев А.А. используя if. Как это можно реализовать?

Без if, но тоже вроде бы ничего:

DECLARE
i NUMBER;
BEGIN
BEGIN
SELECT 1
INTO i
FROM Table
WHERE NAME = 'Кукуев А.А.';
EXCEPTION WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20000,'no_data_found');
END;
END;

С уважением, Максим.

Не особо.
А если два Кукуева ?
2 июн 06, 17:03    [2736213]     Ответить | Цитировать Сообщить модератору
 Re: Как в if проверить существование записи?  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 117689
andrey_anonymous
Но ИМХО чем точнее Вы декларируете Ваши реальные цели, тем больше шансов у oracle эффективно решить задачу.
Чем умнее Вы себе кажетесь, пытаясь SQL программировать, тем скорее Ваши ожидания разойдутся с действительность.
ИМХО.


+ 1
Мне это ОЧЕНЬ нравится
2 июн 06, 17:06    [2736234]     Ответить | Цитировать Сообщить модератору
 Re: Как в if проверить существование записи?  [new]
Jura C
Guest
maksim2020
mod
В функции необходимо проверить сущесвует ли запись name скажем Кукуев А.А. используя if. Как это можно реализовать?

Без if, но тоже вроде бы ничего:

DECLARE
i NUMBER;
BEGIN
BEGIN
SELECT 1
INTO i
FROM Table
WHERE NAME = 'Кукуев А.А.';
EXCEPTION WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20000,'no_data_found');
END;
END;

С уважением, Максим.


Бред,
а too_many_rows почему не контролируеш.
проще
 select min() into var ...
+ 
if var is null then
else
end if;
2 июн 06, 17:07    [2736241]     Ответить | Цитировать Сообщить модератору
 Re: Как в if проверить существование записи?  [new]
maksim2020
Member

Откуда: оттуда
Сообщений: 113
dmidek
maksim2020
mod
В функции необходимо проверить сущесвует ли запись name скажем Кукуев А.А. используя if. Как это можно реализовать?

Без if, но тоже вроде бы ничего:

DECLARE
i NUMBER;
BEGIN
BEGIN
SELECT 1
INTO i
FROM Table
WHERE NAME = 'Кукуев А.А.';
EXCEPTION WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20000,'no_data_found');
END;
END;

С уважением, Максим.

Не особо.
А если два Кукуева ?

Виноват, забыл.
2 июн 06, 17:09    [2736260]     Ответить | Цитировать Сообщить модератору
 Re: Как в if проверить существование записи?  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 117689
Jura C
maksim2020
mod
В функции необходимо проверить сущесвует ли запись name скажем Кукуев А.А. используя if. Как это можно реализовать?

Без if, но тоже вроде бы ничего:

DECLARE
i NUMBER;
BEGIN
BEGIN
SELECT 1
INTO i
FROM Table
WHERE NAME = 'Кукуев А.А.';
EXCEPTION WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20000,'no_data_found');
END;
END;

С уважением, Максим.


Бред,
а too_many_rows почему не контролируеш.
проще
 select min() into var ...
+ 
if var is null then
else
end if;

Тушим пожар бензином.
Для того, чтобы узнать существование записи, вычисляем минимальный элемент. Кто медленнее ?
2 июн 06, 17:11    [2736280]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить