Инструменты пользователя

Инструменты сайта


if

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следущая версия
Предыдущая версия
if [2008/04/25 00:48]
193.110.114.140 создано
if [2008/04/24 23:51] (текущий)
Строка 1: Строка 1:
 +====== IF ======
 +
 +
 +
 +===== Версии сервера =====
 +все
 +
 +
 +===== Доступно в =====
 +[[PSQL]]
 +
 +===== Формат =====
 +1) Полный формат оператора
 +<code sql>
 +IF (<​condition>​)THEN
 +BEGIN
 +  ....
 +  <​operators1>​
 +  ....
 +END
 +ELSE
 +BEGIN
 +  ....
 +  <​operators2>​
 +  ....
 +END
 +</​code>​
 +2) сокращенный формат оператора
 +<code sql>
 +IF (<​condition>​)THEN
 +BEGIN
 +  ....
 +  <​operators1>​
 +  ....
 +END
 +</​code>​
 +3) В случае наличия одного оператора,​ следующего в ветвлении алгоритма,​ операторные скобки BEGIN ... END можно опустить.
 +<code sql>
 +IF (<​condition>​)THEN
 +  <​operator1>;​
 +ELSE
 +  <​operator2>;​
 +</​code>​
 +===== Описание =====
 +Оператор условного перехода IF подмножества PSQL служит для организации ветвления алгоритмов триггеров и хранимых процедур.
 +Если условие <​condition>​ истинно,​ то выполняется <​operator1>,​ иначе <​operator2>​.
 +===== Пример =====
 +1. Использование в триггере.
 +<code sql>
 +CREATE OR ALTER TRIGGER TRIGG_MYTABLE_BIU_10 FOR MYTABLE ​
 +ACTIVE BEFORE INSERT OR UPDATE POSITION 10
 +AS
 +BEGIN
 +  IF (NEW.ID IS NULL) THEN
 +    NEW.ID = GEN_ID(MY_GENERATOR,​ 1);
 +  IF INSERTING THEN
 +  BEGIN
 +    NEW.DATE_INS = CURRENT_TIMESTAMP;​
 +    NEW.USER_INS = CURRENT_USER;​
 +  END
 +  ELSE
 +  BEGIN
 +    NEW.DATE_UPD = CURRENT_TIMESTAMP;​
 +    NEW.USER_UPD = CURRENT_USER;​
 +  END
 +END
 +</​code>​
 +2. Использование в хранимой процедуре.
 +<code sql>
 +CREATE OR ALTER PROCEDURE MY_PROC(
 +  GROUP_ID INTEGER
 +)RETURNS(
 +   ​ID ​  ​INTEGER
 +  ,NAME VARCHAR(255)
 +)AS
 +BEGIN
 +  FOR
 +    SELECT TB.ID, TB.NAME
 +    FROM   ​MYTABLE TB
 +    WHERE  ((TB.GROUP_ID+0) = :GROUP_ID)
 +    INTO   :ID, :NAME
 +  DO
 +    IF (:ID > 10000) THEN
 +    BEGIN
 +      ID = :ID - 10000;
 +      SUSPEND;
 +    END
 +END
 +</​code>​
 +===== См. также =====
 +[[FOR]], [[WHILE]], [[SUSPEND]],​ [[INSERTING]],​ [[UPDATING]]
 +===== Источник =====
  
if.txt · Последние изменения: 2008/04/24 23:51 (внешнее изменение)