602SQL-┌plnß dokumentace Index   Tisk  

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