Shrnutí: v tomto kurzu se seznámíte s anonymním blokem PL/SQL a s jeho prováděním pomocí nástrojů SQL*Plus a SQL Developer.
Přehled anonymních bloků PL/SQL
PL/SQL je blokově strukturovaný jazyk, jehož kód je uspořádán do bloků. Blok PL/SQL se skládá ze tří částí: deklarace, spustitelné části a části pro zpracování výjimek. V bloku je spustitelná sekce povinná, zatímco sekce deklarace a sekce pro zpracování výjimek jsou nepovinné.
Blok PL/SQL má název. Funkce nebo procedury jsou příkladem pojmenovaného bloku. Pojmenovaný blok je uložen do serveru Oracle Database a může být později znovu použit.
Blok bez názvu je anonymní blok. Anonymní blok není uložen v databázovém serveru Oracle Database, takže je určen pouze k jednorázovému použití. Anonymní bloky PL/SQL však mohou být užitečné pro účely testování.
Následující obrázek znázorňuje strukturu bloku PL/SQL:
1) Deklarační část
Blok PL/SQL má deklarační část, kde se deklarují proměnné, alokuje paměť pro kurzory a definují datové typy.
2) Spustitelná sekce
Blok PL/SQL má spustitelnou sekci. Spustitelná sekce začíná klíčovým slovem BEGIN
a končí klíčovým slovem END
. Spustitelná sekce musí obsahovat alespoň jeden spustitelný příkaz, i když je to příkaz NULL
, který nic nedělá.
3) Sekce pro ošetření výjimek
Blok PL/SQL má sekci pro ošetření výjimek, která začíná klíčovým slovem EXCEPTION
. V sekci pro obsluhu výjimek se zachycují a zpracovávají výjimky vyvolané kódem ve vykonávací sekci.
Všimněte si, že samotný blok je vykonatelný příkaz, proto můžete blok vnořit do jiných bloků.
Příklad anonymního bloku PL/SQL
Následující příklad ukazuje jednoduchý anonymní blok PL/SQL s jednou vykonatelnou sekcí.
Spustitelná sekce volá proceduru DMBS_OUTPUT.PUT_LINE
pro zobrazení zprávy "Hello World"
na obrazovce.
Spustit anonymní blok PL/SQL pomocí SQL*Plus
Jakmile máte kód anonymního bloku, můžete jej spustit pomocí SQL*Plus, což je rozhraní příkazového řádku pro spouštění příkazů SQL a bloků PL/SQL, které poskytuje Oracle Database.
Následující obrázek ukazuje, jak spustit blok PL/SQL pomocí SQL*Plus:
Nejprve se připojte k serveru Oracle Database pomocí uživatelského jména a hesla.
Druhé zapněte výstup na server pomocí příkazu SET SERVEROUTPUT ON
, aby se na obrazovce zobrazil text procedury DBMS_OUTPUT.PUT_LINE
.
Zatřetí zadejte kód bloku a zadejte lomítko vpřed ( /
), čímž dáte SQL*Plus pokyn k provedení bloku. Jakmile zadáte lomítko vpřed (/), SQL*Plus provede blok a zobrazí na obrazovce zprávu Hello World
, jak je znázorněno na obrázcích.
Všimněte si, že pro zobrazení zprávy pomocí procedury DBMS_OUTPUT.PUT_LINE
musíte v každé relaci, kterou připojujete k databázi Oracle, provést příkaz SET SERVEROUTPUT ON
.
Chcete-li znovu spustit blok, který jste zadali, použijete příkaz /
, místo abyste vše psali od začátku:
Chcete-li upravit blok kódu, použijte příkaz edit
. SQL*Plus zapíše blok kódu do souboru a otevře jej v textovém editoru, jak ukazuje následující obrázek:
Obsah souboru můžete změnit takto:
A soubor uložte a zavřete. Obsah souboru bude zapsán do vyrovnávací paměti a překompilován.
Poté můžete blok kódu znovu spustit, bude použit nový kód:
Spustit anonymní blok PL/SQL pomocí programu SQL Developer
Nejprve se připojte k serveru databáze Oracle pomocí programu Oracle SQL Developer.
Druhé vytvořte nový soubor SQL s názvem anonymous-block.sql
umístěný v adresáři C:\plsql
, který bude uchovávat kód PL/SQL.
Zatřetí zadejte kód PL/SQL a spusťte jej kliknutím na tlačítko Execute nebo stisknutím klávesové zkratky Ctrl-Enter.
Další příklady PL/SQL anonymního bloku
V tomto příkladu nejprve deklarujeme proměnnou l_message
, která obsahuje uvítací zprávu. A pak ve vykonávací části použijeme proceduru DBMS_OUTPUT.PUTLINE
, abychom místo doslovného řetězce zobrazili obsah této proměnné.
Tady je výstup:
Hello World!
Další příklad anonymního bloku přidává část pro zpracování výjimek, která zachytí výjimku ZERO_DIVIDE
vyvolanou ve vykonávací části a zobrazí chybovou zprávu.
Chybové hlášení zní:
ORA-01476: divisor is equal to zero
Nyní byste měli vědět, jak vytvářet anonymní bloky PL/SQL a spouštět je pomocí nástrojů SQL*Plus a Oracle SQL Developer.
- Pomohl vám tento návod?