P°φkaz CALL - volßnφ procedury (SQL)

volßnφ_procedury ::= CALL [DETACHED] [schema.]jmΘno ([skuteΦn²_parametr {, skuteΦn²_parametr}à ]);
skuteΦn²_parametr ::= klφΦov²_parametr | poziΦnφ_parametr
klφΦov²_parametr ::= jmΘno_formßlnφho_parametru => v²raz
poziΦnφ_parametr ::= v²raz

P°φkaz CALL zavolß proceduru vytvo°enou p°φkazem CREATE PROCEDURE (globßlnφ - ulo₧enou jako objekt aplikace) nebo lokßlnφ (deklarovanou pomocφ DECLARE PROCEDURE).

Je mo₧nΘ volat i procedury ulo₧enΘ v jinΘ aplikaci - jmΘno procedury prefixujte jmΘnem aplikace (v SQL jazyce schΘmatu) a teΦkou. Upozorn∞nφ: procedura je kompilovanß v kontextu aplikace, kde je ulo₧ena, ne v kontextu aplikace, odkud je volßna. Zavolß-li procedura tabulku neprefixovanou jmΘnem aplikace, pou₧ije se tabulka v tΘ aplikaci, kde je procedura ulo₧ena.

Je-li pou₧ito slovo DETACHED, procedura se spustφ v samostatnΘm vlßkn∞ - podrobnosti.

PoziΦnφ skuteΦnΘ parametry se p°i°azujφ formßlnφm parametr∙m uveden²m v popisu procedury na zßklad∞ svΘ pozice (po °ad∞ zleva doprava), zatφmco klφΦovΘ parametry jsou rozliÜeny na zßklad∞ jmΘna formßlnφho parametru. PoziΦnφ parametry musφ b²t uvedeny p°ed klφΦov²mi.

Hodnota vstupnφho parametrem je udßna hodnotou v²razu. Typ v²razu musφ b²t takov², aby se jeho hodnota dala p°i°adit do formßlnφho parametru. V²stupnφm nebo vstupn∞-v²stupnφm skuteΦn²m parametrem musφ b²t prom∞nnß nebo sloupec stejnΘho typu, jakΘho je formßlnφ parametr.

RozÜφ°enφ jazyka SQL proti norm∞

Implementacφ definovanΘ vlastnosti SQL ve WinBase602

P°φklady pou₧itφ:

M∞jme proceduru PARAM s jednφm vstupnφm a jednφm v²stupnφm parametrem definovanou takto:

PROCEDURE PARAM( IN dt DATE, OUT res INT );
BEGIN
  SELECT COUNT(*) INTO res
  FROM Tab1
  WHERE dat = dt;
END

Proceduru lze volat (nap°. z vnit°nφho jazyka) takto (poziΦnφ parametry):

var
  datum : date;
  kolik : integer;
begin
  datum := 19.3.1999;
#sql CALL PARAM(:<datum, :>kolik);
  Info_box("",Int2str(kolik)) ;
end.

nebo takto (klφΦovΘ parametry):

#sql CALL PARAM(res=>:>kolik, dt=>:<datum);