Psaní PL/pgSQL funkcí
Úvod
PostgreSQL je víc než jen RDBMS engine. Je to vyvíjející se platforma. Nabízí
velmi výkonný a flexibilní programovací jazyk zvaný PL/pgSQL. Pomocí tohoto
jazyka si můžete psát vlastní uživatelsky definované funkce a dosáhnout tak
úrovně abstrakce a procedurálních výpočtů, které by se v čistém SQL dosahovaly
obtížně (a někdy by se bez přepínání kontextu do aplikace nedaly dosáhnout vůbec).

Psaní funkcí
Ve schématu public klikněte pravým tlačítkem na uzel Functions a
zvolte Create Function. Otevře se vnitřní záložka SQL Query, která už
obsahuje SQL šablonu pomáhající vytvořit vaši první PL/pgSQL funkci.


Ohledně psaní uživatelsky definovaných funkcí se můžete podívat do dokumentace PostgreSQL. Stačí kliknout pravým tlačítkem na uzel Functions a zvolit Doc: Functions — příslušná stránka dokumentace PostgreSQL se otevře ve vašem webovém prohlížeči (v desktopové aplikaci v systémovém výchozím prohlížeči, při běhu jako prohlížečový OmniDB Server jako nová karta).
Nyní tuto SQL šablonu celou nahraďte následujícím zdrojovým kódem:
CREATE OR REPLACE FUNCTION public.fnc_count_vowels (p_input text)
RETURNS integer LANGUAGE plpgsql AS
$function$
DECLARE
str text;
ret integer;
i integer;
len integer;
BEGIN
str := upper(p_input);
ret := 0;
i := 1;
len := length(p_input);
WHILE i <= len LOOP
IF substr(str, i, 1) in ('A', 'E', 'I', 'O', 'U') THEN
ret := ret + 1;
END IF;
i := i + 1;
END LOOP;
RETURN ret;
END;
$function$
Tím se ve schématu public vytvoří funkce nazvaná fnc_count_vowels.
Tato funkce přijímá textový argument p_input a spočítá, kolik samohlásek
tento řetězec obsahuje. Poté tento počet vrátí.
Funkci vytvoříte spuštěním příkazu ve vnitřní záložce SQL Query. Pokud se to podaří, funkce se objeví pod stromovým uzlem Functions (můžete jej obnovit kliknutím pravým tlačítkem a volbou Refresh). Rozbalením uzlu funkce navíc uvidíte její návratový typ a argument.

Nyní tuto novou funkci poprvé spusťme. Otevřete jednoduchou vnitřní záložku SQL Query a spusťte následující SQL dotaz:
SELECT public.fnc_count_vowels('The quick brown fox jumps over the lazy dog.')

Všimněte si, že dotaz vrací jedinou hodnotu obsahující počet samohlásek v textu.
Kliknutím pravým tlačítkem na uzel funkce uvidíte, že jsou k dispozici akce pro její úpravu, výběr a odstranění. Jak jste asi tušili, každá akce otevře vnitřní záložky SQL Query s praktickými SQL šablonami.