count(*)
Funkce, která vám vrátí počet řádků ve výsledku sql dotazu. Dá se pěkně kombinovat s where podmínkou. Asi nemusím nikomu představovat.
Návratovou hodnotou je integer.
Příklad
select count(*) from DeltaExtract where datastate = ‘D’;
Dotaz vrátí počet delete záznamů z tabulky DeltaExtract. Na základě tohoto výsledků můžete řídit další zpracování = kontrola, že to vrátilo počet > 0. To je docela složitá konstrukce jen na to zjistit jestli máme v extraktu nějaký delete.
exists()
Otestuje přítomnost prvku ve výsledku SQL dotazu. Dá se také pěkně kombinovat s where podmínkou. Nehledá počet, ale první výskyt (najde první řádek s hledanou hodnotou), ukončí hledání a vrátí boolean. Pokud najde tak TRUE, pokud nenajde tak FALSE.
Pokud nenajde, tak je stejně výkonově náročná jako fce count. Pokud najde může být násobně rychlejší, efektivnější, no prostě lepšejší. Je možné použít i “not exists”.
Příklad
IF EXISTS(SELECT * from DeltaExtract where datastate = ‘D’)
PRINT ‘yes’
ELSE
PRINT ‘no’
Výsledek vrátí “yes”. Výkon dotazu se dokončí v momentě kdy se najde první výskyt datastate = ‘D’.
Níže je ukázka exekučního plánu pro dva adhoc sql dotazy. První je s count, druhý s exists.
Určitě najdete i další použití této funkce. Nyní používám hlavně v ADF v look upech pro řízení