http://postgres.cz/index.php?title=Podm%C3%ADn%C4%9Bn%C3%A9_prov%C3%A1d%C4%9Bn%C3%AD_p%C5%99%C3%ADkaz%C5%AF&feed=atom&action=historyPodmíněné provádění příkazů - Historie editací2024-03-29T09:07:15ZHistorie editací této stránkyMediaWiki 1.36.0http://postgres.cz/index.php?title=Podm%C3%ADn%C4%9Bn%C3%A9_prov%C3%A1d%C4%9Bn%C3%AD_p%C5%99%C3%ADkaz%C5%AF&diff=231&oldid=prev85.160.71.40: /* Příkaz CASE */2007-01-17T08:21:09Z<p><span dir="auto"><span class="autocomment">Příkaz CASE</span></span></p>
<p><b>Nová stránka</b></p><div>===Příkaz IF===<br />
Tento příkaz umožňi podmíněné provedení SQL/PSM příkazů (v případě platnosti zadané podmínky - je rovna hodnotě true). K příkazu IF můžeme přidat libovolné množství klauzulí ELSEIF. Na ně přijde řada v případě, že podmínka v IF není splněna. Příkaz může obsahovat jednu klauzuli ELSE, která zajistí provedení relevantních SQL/PSM příkazů pokud ani jedna z testovaných podmínek není pravdivá.<br />
<br />
''Syntaxe''<br />
<pre><br />
IF logicky vyraz THEN<br />
seznam sql/psm prikazu<br />
[ELSEIF logicky vyraz THEN<br />
seznam sql/psm prikazu [ELSEIF ...]]<br />
[ELSE<br />
seznam sql/psm prikazu]<br />
END IF<br />
</pre><br />
<br />
===Příkaz CASE ===<br />
Tento příkaz nám umožňuje snadný zápis řady podmínek, kdy v případě splnění některé z nich, se provede řada SQL/PSM příkazů odpovídající první platné podmínce. U tohoto příkazu je třeba si dávat pozor na záměnu s SQL výrazem ''CASE''. Jak SQL/PSM příkaz ''CASE'', tak SQL výraz ''CASE'' existují ve dvou variantách (v jednoduché a prohledavací). Je však mezi nimi několik zásadních rozdílů: <br />
* za klíčovým slovem then následuje seznam SQL/PSM příkazů,<br />
* příkaz ''CASE'' je ukončen (naprosto v tradici SQL/PSM dvojicí klíčových slov ''END CASE'',<br />
* v případě, že by žádná podmínka nebyla splněna provádí se varianta ''ELSE''. Pokud tato klauzule chybí, vyvolá se výjimka '20000'.<br />
<br />
V jednoduché variantě je za klíčovým slovem ''CASE'' výraz. Provedou se ty SQL/PSM příkazy, kde se výsledek tohoto výrazu nalezne v klauzuli ''WHEN''. V prohledávací variantě klauzule ''WHEN'' obsahuje logický výraz. Provede se ta část (SQL/PSM příkazy za ''THEN''), kde výraz v klauzuli ''WHEN'' bude pravdivý. PL/pgPSM umožňuje zápis seznamu hodnot oddělených čárkou do klauzule ''WHEN'' v jednoduchém ''CASE'' příkazu (tzv. Comma-separated predicates in simple CASE statement).<br />
<br />
''Syntaxe''<br />
<pre><br />
-- jednoduchy prikaz CASE<br />
CASE vyraz<br />
WHEN seznam hodnot oddelenych carkou THEN seznam SQL/PSM prikazu<br />
[ WHEN seznam... THEN seznam... [...]]<br />
END CASE<br />
<br />
-- prohledavaci varianta prikazu CASE<br />
CASE<br />
WHEN logicky vyraz THEN seznam SQL/PSM prikazu<br />
[ WHEN logicky vyraz THEN seznam... [...]]<br />
END CASE<br />
</pre><br />
<br />
Příkaz CASE by se měl použít všude tam, kde použití příkazu IF vede k nepřehlednému zápisu.</div>85.160.71.40