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("Exit handler v SQL funkci Auth_get_username - duplicita u₧ivatel∙ podle jmΘna a hesla");
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