slo₧en² p°φkaz ::=
[
nßv∞Ü
tφ : ] BEGIN [ [ NOT ] ATOMIC ] [
deklarace_prom∞nn²ch
à ] [ deklarace_rutiny à ] [ deklarace_v²jimky à ] [ deklarace_kurzoru à] [ deklarace_handleru à] [
p°φkaz
à] END [
nßv∞Ütφ
];
Slo₧en² p°φkaz je tvo°en jednφm nebo vφce SQL p°φkaz∙. ZaΦφnß klφΦov²m slovem BEGIN a konΦφ slovem END. Ve slo₧enΘm p°φkazu lze deklarovat lokßlnφ objekty (nap°. prom∞nnΘ, rutiny, kurzory), kterΘ budou existovat (pouze) po dobu provßd∞nφ slo₧enΘho p°φkazu a budou moci b²t vyu₧φvßny v p°φkazech obsa₧en²ch ve slo₧enΘm p°φkazu (vΦetn∞ vno°en²ch slo₧en²ch p°φkaz∙). Je-li uvnit° slo₧enΘho p°φkazu volßna procedura, lokßlnφ objekty v nφ nejsou viditelnΘ.
P°i vstupu do slo₧enΘho p°φkazu se vytvo°φ lokßlnφ prom∞nnΘ. PotΘ se po °ad∞ provedou v n∞m obsa₧enΘ p°φkazy, leda ₧e dojde k v²jimce nebo je proveden p°φkaz LEAVE. P°i opuÜt∞nφ slo₧enΘho p°φkazu se uzav°ou vÜechny otev°enΘ lokßlnφ kurzory, zaniknou prom∞nnΘ a zruÜφ se body nßvratu vytvo°enΘ b∞hem jeho provßd∞nφ.
ATOMIC oznaΦuje atomick² slo₧en² p°φkaz, co₧ znamenß, ₧e se provßdφ jako jeden celek a m∙₧e b²t jako celek odvolßn v p°φpad∞ chyby. Nenφ-li uvedeno ATOMIC ani NOT ATOMIC, slo₧en² p°φkaz nenφ atomick². V atomickΘm slo₧enΘm p°φkazu nesmφ b²t obsa₧eny ani provedeny transakΦnφ p°φkazy COMMIT nebo ROLLBACK krom∞ ROLLBACK TO SAVEPOINT na bod nßvratu vytvo°en² uvnit° tohoto slo₧enΘho p°φkazu. Deklarace handleru typu REDO nebo UNDO smφ b²t obsa₧ena pouze v atomickΘm slo₧enΘm p°φkazu.
Je-li uvedeno koncovΘ nßv∞Ütφ, pak musφ b²t uvedeno takΘ stejnΘ poΦßteΦnφ nßv∞Ütφ. Uvnit° slo₧enΘho p°φkazu nesmφ b²t ₧ßdn² p°φkaz oznaΦen stejn²m nßv∞Ütφm.
V deklaracφch bezprost°edn∞ obsa₧en²ch ve slo₧enΘm p°φkazu se nesmφ vyskytnout dvakrßt stejnΘ jmΘno prom∞nnΘ resp. rutiny, dvakrßt stejnΘ jmΘno v²jimky nebo dvakrßt stejnΘ jmΘno kurzoru.
RozÜφ°enφ jazyka SQL proti norm∞