Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Последовательность разбора условий if  [new]
Гость 0
Guest
Может, кто-то интересовался или просто обладает сакральным знанием?
Есть условие
  if (function1(1) = 'Ы') and (function2(2) = 'Ы') then
   ...
  end if;
Какое из условий проверится первым? Скажем, если я уверен, что function1(1) = 'Ы' в 90% случаев принимает значение false, а вычисление function2(2) достаточно ресурсоемкое - имеет ли смысл писать
  if (function1(1) = 'Ы') then
    if  (function2(2) = 'Ы')  then
    ...
    end if;
  end if;


или можно расположить их в определенном порядке в одном if?
17 сен 07, 14:29    [4677349]     Ответить | Цитировать Сообщить модератору
 Re: Последовательность разбора условий if  [new]
juks@gala.net
Member

Откуда: Киев
Сообщений: 4212
В случае AND проверятся все условия.
В случае OR после первого TRUE нет смысла проверять
17 сен 07, 14:32    [4677368]     Ответить | Цитировать Сообщить модератору
 Re: Последовательность разбора условий if  [new]
PPA
Member

Откуда: Караганда -> Липецк
Сообщений: 812
Гость 0
или можно расположить их в определенном порядке в одном if?

можно в одном.
17 сен 07, 14:34    [4677380]     Ответить | Цитировать Сообщить модератору
 Re: Последовательность разбора условий if  [new]
juks@gala.net
Member

Откуда: Киев
Сообщений: 4212
juks@gala.net
В случае AND проверятся все условия.
В случае OR после первого TRUE нет смысла проверять

Если AND после первого FALSE тоже нет смысла проверять )
17 сен 07, 14:34    [4677383]     Ответить | Цитировать Сообщить модератору
 Re: Последовательность разбора условий if  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
если знаете, что ресурсоемкое, то ИМХО лучше разложить вторым вариантом (надежнее).

Ну а по практике and в прямом порядке :)
17 сен 07, 14:36    [4677393]     Ответить | Цитировать Сообщить модератору
 Re: Последовательность разбора условий if  [new]
Дубовая голова
Member [заблокирован]

Откуда: с цепи сорвался
Сообщений: 1821
Гость 0
или можно расположить их в определенном порядке в одном if?


SQL> begin
  2   if to_number('abc') = 1 or to_number('2') = 2 then
  3    null;
  4   end if;
  5  end;
  6  /
begin
*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at line 2


SQL> begin
  2   if to_number('2') = 2 or to_number('abc') = 1 then
  3    null;
  4   end if;
  5  end;
  6  /

PL/SQL procedure successfully completed.
17 сен 07, 14:36    [4677394]     Ответить | Цитировать Сообщить модератору
 Re: Последовательность разбора условий if  [new]
Elic
Member

Откуда:
Сообщений: 29979
RTFM Short-Circuit Evaluation (FAQ)
17 сен 07, 14:38    [4677415]     Ответить | Цитировать Сообщить модератору
 Re: Последовательность разбора условий if  [new]
Гость 0
Guest
juks@gala.net
juks@gala.net
В случае AND проверятся все условия.
В случае OR после первого TRUE нет смысла проверять

Если AND после первого FALSE тоже нет смысла проверять )

А будут ли условия проверяться в том порядке, в каком они написаны?
17 сен 07, 14:39    [4677419]     Ответить | Цитировать Сообщить модератору
 Re: Последовательность разбора условий if  [new]
Elic
Member

Откуда:
Сообщений: 29979
Гость 0
А будут ли
Не верь никому Чти доку
17 сен 07, 14:42    [4677434]     Ответить | Цитировать Сообщить модератору
 Re: Последовательность разбора условий if  [new]
Гость 0
Guest
Всем спасибо, научили, рассказали :)
MAN
In any case, it is a poor programming practice to rely on short-circuit evaluation.

и пристыдили заодно :)
17 сен 07, 14:42    [4677438]     Ответить | Цитировать Сообщить модератору
 Re: Последовательность разбора условий if  [new]
Гость 0
Guest
Elic
Гость 0
А будут ли
Не верь никому Чти доку

Увы, спас лишь Ваш магический "тынц", до этого - тонул на просторах man-a...
17 сен 07, 14:44    [4677448]     Ответить | Цитировать Сообщить модератору
 Re: Последовательность разбора условий if  [new]
PPA
Member

Откуда: Караганда -> Липецк
Сообщений: 812
juks@gala.net
В случае AND проверятся все условия.


?
17 сен 07, 14:50    [4677486]     Ответить | Цитировать Сообщить модератору
 Re: Последовательность разбора условий if  [new]
Elic
Member

Откуда:
Сообщений: 29979
PPA
juks@gala.net
В случае AND проверятся все условия.
?
Если читать снизу вверх или до конца, то всё встанет на свои места :)
17 сен 07, 14:55    [4677517]     Ответить | Цитировать Сообщить модератору
 Re: Последовательность разбора условий if  [new]
juks@gala.net
Member

Откуда: Киев
Сообщений: 4212
PPA
juks@gala.net
В случае AND проверятся все условия.


?

Это бред. Дебильно сформулировал.
17 сен 07, 14:57    [4677540]     Ответить | Цитировать Сообщить модератору
 Re: Последовательность разбора условий if  [new]
juks@gala.net
Member

Откуда: Киев
Сообщений: 4212
juks@gala.net
PPA
juks@gala.net
В случае AND проверятся все условия.


?

Это бред. Дебильно сформулировал.

Пока не встретится FALSE проверятся все условия
17 сен 07, 14:58    [4677547]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить