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