PostgreSQL umožňuje přidat programovací jazyky pro psaní funkcí a procedur. Tyto jazyky se nazývají procedurální (PL). V případě funkce nebo procedury napsané pomocí procedurálního jazyka je dotaz předán jinému obslužnému programu, který zná strukturu daného jazyka. Databázový server samotný totiž nemá schopnost interpretovat kód funkce. Tento obslužný program může sloužit k syntaktické analýze příkazů, jejich vykonání, nebo pouze jako spojení mezi PostgreSQL a existující implementací programovacího jazyka. Sám je tento program funkcí programovacího jazyka, která je zahrnutá do sdíleného objektu, který se načte na požádání. Několik procedurálních jazyků je dostupných již ze standardní distribuce PostgreSQL. Jsou to PL/pgSQL, PL/Tcl, PL/Perl a PL/Python. Ostatní jazyky mohou být definovány uživatelem. [2]
Procedurální jazyk musí být nainstalovaný v každé databázi, ve které jej chceme použít. Pokud procedurální jazyk je nainstalovaný například v databázi template1, pak bude dostupný i ve všech následovně vytvořených databázích. Administrátor tedy může rozhodnout, který jazyk bude dostupný ve které databázi. [2]
Pro instalaci PL/pgSQL do databáze template1 použijeme následující příkaz: createlang plpgsql template1. [2]
V této části uvedeme dohodnutý algoritmus, který má modelovat šíření kůrovce.
Zeleně vyplněný polygon na obrázku představuje porostní jednotku. Testujeme lomové body, zdali budou ohnisky kůrovce a to tak, že vytvoříme kružnici o dohodnutém průměru kolem lomového bodu, kde testujeme, pokud její SV, dále JV a SZ bod, padnou do zeleného polygonu (Z) či nikoliv (B). Rozhodnutí, zda-li je bod ohniskem je vyhodnoceno podle tabulky vlevo na obrázku. Tato tabulka říká, že pokud všechny tyto tři body padnou do zeleného polygonu, bod je ohniskem a pokud padne SV do zeleného polygonu a zbylé dva body ne, bod je rozvněž ohniskem.
Máme k dispozici algoritmy v jazyce PL/SQL. Naším cílem je, aby tyto algoritmy byly v PL/pgSQL. V této části se zatím nepodařilo odladit všechny problémy, které administrátor (pgAdminIII) hlásí při spuštění daného kódu. Myslím si, že pro řešení této úlohy by bylo nejefektivnější napsat jednoduchý převaděč mezi těmito dvěma jazyky.