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);