Košík je prázdný

PostgreSQL je pokročilý objektově-relační databázový systém, který nabízí rozsáhlou podporu pro procedurální rozšíření. Tyto možnosti umožňují vývojářům psát komplexní databázové funkce, triggery a uložené procedury v různých programovacích jazycích, což zvyšuje flexibilitu a výkonnost aplikací. V tomto článku se zaměříme na to, jak používat tyto procedurální rozšíření, specificky na PL/pgSQL, který je nativním procedurálním jazykem PostgreSQL.

Základy PL/pgSQL

PL/pgSQL je blokový strukturovaný jazyk podobný ADA a Oracle’s PL/SQL. Umožňuje vytváření funkčních bloků kódu, které lze používat pro iterace, podmíněné vykonávání a řízení výjimek.

Vytváření funkce v PL/pgSQL

Pro vytvoření funkce v PL/pgSQL je třeba specifikovat název funkce, typ návratové hodnoty, vstupní parametry (pokud nějaké jsou), a samotné tělo funkce. Zde je základní příklad:

CREATE OR REPLACE FUNCTION ziskej_pocet_zamestnancu()
RETURNS integer AS $$
BEGIN
    RETURN (SELECT count(*) FROM zamestnanci);
END;
$$ LANGUAGE plpgsql;

Používání proměnných

V PL/pgSQL můžete definovat a používat proměnné pro uchování dočasných hodnot. Proměnné je třeba nejprve deklarovat v sekci DECLARE funkce. Příklad:

DECLARE
    pocet integer;
BEGIN
    SELECT count(*) INTO pocet FROM zamestnanci;
    RETURN pocet;
END;

Ošetření výjimek

V PL/pgSQL je možné ošetřovat výjimky pomocí bloku EXCEPTION, což umožňuje zachycení a zpracování chyb během vykonávání funkce. Příklad ošetření výjimky:

BEGIN
    -- Pokus o operaci
EXCEPTION WHEN others THEN
    -- Reakce na chybu
    RAISE NOTICE 'Nastala neočekávaná chyba.';
END;

Práce s kurzory

Kurzory umožňují iterativní zpracování řádků vrácených dotazem. V PL/pgSQL se kurzor deklaruje a poté otevírá pro konkrétní SELECT příkaz. Příklad:

DECLARE
    kurzor REFCURSOR;
BEGIN
    OPEN kurzor FOR SELECT * FROM zamestnanci;
    -- Zpracování výsledků
    CLOSE kurzor;
END;

 

Triggery a uložené procedury

Kromě funkcí umožňuje PL/pgSQL vytváření triggerů (spouštěčů), které reagují na události v databázi, jako jsou vkládání, aktualizace nebo mazání záznamů. Triggery mohou automaticky spouštět uložené procedury, které provádějí definované operace.

 

Procedurální rozšíření v PostgreSQL nabízejí vývojářům mocný nástroj pro rozšíření funkcionalit a zlepšení výkonnosti databázových aplikací. S pomocí PL/pgSQL lze vytvářet komplexní logiku zpracování dat, která je přímo integrována do databáze, což vede k lepšímu výkonu a bezpečnosti aplikací.