602SQL-Úplná dokumentace Index  

Příkaz IF (SQL)

příkaz_IF ::= IF podmínka THEN příkaz …
[ ELSEIF podmínka THEN příkaz … ] …
[ ELSE příkaz … ]
END IF;

Při provádění příkazu IF se po řadě vyhodnocují podmínky, dokud se nenajde první, která má hodnotu TRUE, a pak se provedou za ní následující příkazy. Není-li splněna žádná z podmínek (všechny mají hodnotu FALSE nebo UNKNOWN), provedou se případné příkazy za ELSE.

Příklad: trigger, který zajistí zapsání absolutní hodnoty čísla

TRIGGER befupd BEFORE UPDATE OF CISINT ON Tab2
REFERENCING NEW ROW AS novaradka
FOR EACH ROW
BEGIN
  IF novaradka.cisint < 0 THEN
    SET novaradka.cisint=-novaradka.cisint;
  END IF;
END

Příklad2: Funkce, která zkontroluje platnost přihlášení do aplikace (z webu):

FUNCTION AUTH_GET_USERNAME(IN username CHAR(254),IN password CHAR(254)) RETURNS CHAR(35);
/*****************************************************/
// vrátí jméno uživatele (resp. jméno firmy) zadaného logjménem a heslem, 
// pokud neexistuje, vrátí NULL
BEGIN
  DECLARE jmeno CHAR(35);
  DECLARE EXIT HANDLER FOR SQLSTATE '21000' BEGIN 
    CALL Log_write('Handler v Auth_get_username - duplicita uživatelů ');
    RETURN NULL;
  END;

  IF EXISTS(SELECT id FROM Obchodni_partneri 
            WHERE intr_user=username AND intr_pswd=password )
  THEN 
    SELECT nazev1 INTO jmeno FROM  Obchodni_partneri 
    WHERE intr_user=username AND intr_pswd=password;
    RETURN jmeno;
  ELSE RETURN NULL;
  END IF;
END