602SQL-Úplná dokumentace Index  

Procedury a funkce uložené na serveru (SQL)

Procedury a funkce uložené na serveru (označované souhrnně jako rutiny) zjednodušují tvorbu databázových aplikací a urychlují jejich běh. Klientská aplikace využívající uložených rutin pouze volá hotové rutiny (přitom jim předává vstupní parametry a přebírá výstupní), místo aby posílala serveru zvláštní požadavek na provedení každého příkazu obsaženého v rutinách.

Je-li definice rutiny syntakticky špatně, dojde již při překladu ke kompilační chybě.

Proceduru lze provést tak, že se zavolá pomocí SQL příkazu CALL.

Funkce se provede, vyskytne-li se její volání jako součást výrazu. Během provádění funkce musí být v jejím těle proveden příkaz RETURN. Pokud proveden není, nastane chybový sqlstate 2F001 (SQ_NO_RETURN_IN_FNC).

Rutinu lze vytvořit, modifikovat a zrušit:

V obou prostředích se rutina definuje pomocí jazyka pro psaní rutin a triggerů z SQL 3. Ve vývojovém prostředí 602SQL začíná text editované rutiny slovem PROCEDURE nebo FUNCTION, slovo CREATE nebo ALTER se neuvádí.

Rozšíření jazyka SQL proti normě

Podrobnosti o uložených rutinách lze najít na následujících stránkách:

Pro účely ladění může být také výhodné trasovat volání SQL procedur (situace TRACE_PROCEDURE_CALL ).

Příklad použití funkce jakožto integritního omezení v tabulce:

V tabulce je sloupec RETEZEC a klauzule CHECK (KONTROLA(RETEZEC))).

V téže aplikaci je rutina KONTROLA, která kontroluje, je-li předaný řetězec delší než 8 znaků, jestliže ne, vrátí funkce FALSE a integritní omezení není splněno:

FUNCTION `KONTROLA`(IN str CHAR(12)) RETURNS BOOLEAN;
BEGIN
  DECLARE pom BOOLEAN DEFAULT FALSE;
  IF CHAR_LENGTH(str)>8 THEN 
    SET pom=TRUE; 
  END IF;
  RETURN pom;
END

Seznam subsekcí: