Oracle DBA Forum  

Вернуться   Oracle DBA Forum > Работа > temp

Ответ
 
Опции темы Опции просмотра
  #1  
Старый 19.10.2009, 18:50
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Условные операторы и переходы (Conditional and Sequential Control)

IF THEN END IF;
IF THEN ELSE END IF;
IF THEN ELSIF ELSE END IF;
__________________
Телеграм чат
Ответить с цитированием
  #2  
Старый 19.10.2009, 18:52
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию IF...THEN

Код:
IF condition
THEN
... sequence of executable statements ...
END IF;
Пример:

Код:
IF salary > 40000
THEN
give_bonus (employee_id,500);
END IF;
__________________
Телеграм чат
Ответить с цитированием
  #3  
Старый 19.10.2009, 18:56
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию IF...THEN...ELSE

Код:
IF condition
THEN
... TRUE sequence of executable statements ...
ELSE
... FALSE/NULL sequence of executable statements ...
END IF;
Пример:

Код:
IF salary <= 40000
   THEN
      give_bonus (employee_id, 0);
   ELSE
      give_bonus (employee_id, 500);
END IF;
Если возможно что salary NULL, лучше использовать:

Код:
IF NVL(salary,0) <= 40000
  THEN
       give_bonus (employee_id, 0);
   ELSE
       give_bonus (employee_id, 500);
END IF;
__________________
Телеграм чат

Последний раз редактировалось Marley; 19.10.2009 в 19:37.
Ответить с цитированием
  #4  
Старый 19.10.2009, 19:51
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию IF...THEN...ELSIF

Код:
IF condition-1
   THEN
      statements-1

ELSIF condition-N
   THEN
      statements-N

[ELSE
      else_statements]

END IF;

Пример:


Код:
IF salary BETWEEN 10000 AND 20000
THEN
      give_bonus(employee_id, 1500);

ELSIF salary BETWEEN 20000 AND 40000
THEN
      give_bonus(employee_id, 1000);

ELSIF salary > 40000
THEN
      give_bonus(employee_id, 500);

ELSE
      give_bonus(employee_id, 0);
END IF;
__________________
Телеграм чат
Ответить с цитированием
  #5  
Старый 19.10.2009, 19:55
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию CASE

Код:
CASE expression
WHEN result1 THEN
statements1

WHEN result2 THEN
statements2

...

ELSE
statements_else

END CASE;
Пример:

Код:
CASE TRUE
WHEN salary >= 10000 AND salary <=20000
THEN
give_bonus(employee_id, 1500);

WHEN salary > 20000 AND salary <= 40000
THEN
give_bonus(employee_id, 1000);

WHEN salary > 40000
THEN
give_bonus(employee_id, 500);

ELSE
give_bonus(employee_id, 0);

END CASE;



Код:
DECLARE

boolean_true BOOLEAN := TRUE;
boolean_false BOOLEAN := FALSE;
boolean_null BOOLEAN;

FUNCTION boolean_to_varchar2 (flag IN BOOLEAN) RETURN VARCHAR2 IS
   BEGIN
      RETURN 
         CASE flag
            WHEN TRUE THEN 'True'
            WHEN FALSE THEN 'False'
         
           ELSE 'NULL'
         END;
    END;

BEGIN

   DBMS_OUTPUT.PUT_LINE(boolean_to_varchar2(boolean_true));
   DBMS_OUTPUT.PUT_LINE(boolean_to_varchar2(boolean_false));
   DBMS_OUTPUT.PUT_LINE(boolean_to_varchar2(boolean_null));

END;
__________________
Телеграм чат

Последний раз редактировалось Marley; 19.10.2009 в 20:00.
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 21:02. Часовой пояс GMT +3.


Powered by vBulletin®