Uložené procedury, funkce a balíky procedur a funkcí, kompilace, spouštění.

Podprogram je pojmenovaný blok, který může být opakovaně volán a může přebírat aktuální parametry. Typy podprogramů jsou funkce a procedury. Procedury a funkce lze sdružovat do logických celků – balíků (package).

Všechny anonymní bloky PL/SQL lze natrvalo uložit do databáze, a to buď ve tvaru procedury, nebo funkce.

Uložené podprogramy – procedury a funkce

Procedury a funkce mohou být trvale uloženy do DB a mohou být použity jakoukoli aplikací, která s databázovým strojem komunikuje. Jednou přeložený a uložený program patří mezi databázové objekty a může být referován libovolným počtem aplikací.

Uložené podprogramy mohou být samostatné, nebo součástí balíku.

DB triggerů

Jiných uložených podprogramů

Aplikačních programů zapsaných ve vyšším programovacím jazyce, pro nějž existuje předkompilátor (ORACLE Pro)

Interaktivně (SQL*Plus) : EXECUTE jmeno_procedury(parametry)

Uložené procedury a funkce mohou mít parametry, které mohou být:

IN OUT – vstupní i výstupní

Uložená procedura

Nelze volat z SQL příkazů

Na rozdíl od funkce může vracet více parametrů (IN/OUT)

Pro zrušení (smazání) uložené procedury použijeme příkaz:

Uložená funkce

Způsob vytvoření uložené funmkce (s parametry) ukazuje následující příklad:

Pro zrušení (smazání) uložené funkce použijeme příkaz:

Uložené balíky

Uložené balíky procedur a funkcí slouží ke sdružení logicky spolu souvisejících procedur a funkcí, ale i typů a objektů. Mohou obsahovat i globální proměnné, jejichž platnost je omezena délkou aktuálního spojení s databází.

Definice balíku představuje definici rozhraní balíku (deklarace typů, proměnných, konstant, podmínek definujících nestandardní stavy, kurzorů, podprogramů dostupných zvenčí)(co tam je za funkce parametry, ale bez těla) a těla balíku (implementuje specifikaci)(normálně napsané procedury včetně implementace).

Př. rozhraní:

Př. Těla:

Pokud se kompilace nezdaří, dojde k výjimce.

Ruční kompilace

Pokud se kompilace nezdaří, dojde k výjimce

SQL*Plus a chyby kompilace – pomocí něj můžeme zjistit, jaké chyby se vyskytly při kompilaci. Pokud uložení procedury/funkce neproběhlo bez chyb, nelze ji používat a je nutné ji opravit. Pomocí SQL*Plus příkazů:

SHOW ERROR – vypíše popis poslední chyby, na kterou při ukládání (kompilaci) narazil

SHOW ERR typ jméno – např. SHOW ERR FUNCTION F – pro uvedený objekt

Spouštění

Proceduru můžeme zavolat (spustit různými způsoby:

Pomocí direktivy EXEC – EXEC nastav_plat(123, 10000);

V těle jiného PL/SQL bloku

Funkci můžeme volat také dvěma způsoby:

V příkazu SELECT – SELECT secti(2, 3) FROM dual;

V těle jiného PL/SQL bloku

Při volání funkcí/procedur z balíků používáme tečkovou notaci (package.funkce()) pro kvalifikaci jejich jména.

Zabalený podprogram lze volat z db triggeru, jiného uloženého programu, aplikace napsané pro některý z předkompilátorů, standardních klientských nástrojů (SQL*Plus)

Standardní balík STANDARD = definuje prostředí PL/SQL.
