PL/SQL blok: struktura, syntaxe a anonymní příklad

⚡ Chytré shrnutí

Blok PL/SQL je základní jednotka, která seskupuje instrukce PL/SQL a SQL, aby se prováděly společně, a ne řádek po řádku. Každý blok má sekci pro deklaraci, provádění a ošetření výjimek a bloky jsou buď anonymní, nebo pojmenované.

  • 🧱 Základní myšlenka: Code je seskupeno do bloku, který běží jako celek a kombinuje procedurální logiku s SQL.
  • ???? Sekce prohlášení: Volitelné; deklaruje proměnné, kurzory, výjimky a podprogramy použité v bloku.
  • ▶ </ s> Sekce provedení: Povinné; začíná BEGIN a obsahuje alespoň jeden spustitelný příkaz.
  • 🛡️ Sekce výjimek: Volitelné; začíná VÝJIMKOU a zpracovává chyby za běhu.
  • ???? ️ Dva typy: Anonymní bloky jsou nepojmenované a spouštějí se jednou; pojmenované bloky jsou uloženy jako databázové objekty.
  • 🔁 Pojmenované bloky: Procedury a funkce jsou pojmenované bloky, které lze volat opakovaně.
  • Terminátor: END blok uzavře a lomítko jej odešle kompilátoru.

Struktura a syntaxe bloků PL/SQL

Co je to blok v PL/SQL?

V PL/SQL se kód neprovádí v jednořádkovém formátu; vždy se provádí pomocí skupiny.ping kód do jednoho prvku nazývaného blok. V tomto tutoriálu se o těchto blocích dozvíte.

Bloky obsahují instrukce PL/SQL i SQL. Všechny tyto instrukce se provádějí jako celek, nikoli po jednotlivých instrukcích.

Bloková struktura

Bloky PL/SQL mají předdefinovanou strukturu, ve které je kód seskupen. Níže jsou uvedeny různé sekce bloku PL/SQL:

  1. Oddíl prohlášení
  2. Sekce provedení
  3. Sekce manipulace s výjimkami

Obrázek níže znázorňuje různé sekce bloků PL/SQL a jejich pořadí.

Sekce a pořadí bloků PL/SQL

Oddíl prohlášení

Toto je první sekce bloku PL/SQL a je volitelná. Je to sekce, ve které se deklarují proměnné, kurzory, výjimky, podprogramy, instrukce pragma a kolekce potřebné v bloku. Několik dalších charakteristik této části:

  • Tato sekce je volitelná a lze ji přeskočit, pokud nejsou potřeba žádné deklarace.
  • Měla by to být první sekce v bloku PL/SQL, pokud je přítomna.
  • Pro spouštěče a anonymní bloky začíná klíčovým slovem 'DECLARE'. Pro ostatní podprogramy toto klíčové slovo není přítomno; místo toho část za názvem podprogramu označuje sekci deklarace.
  • Vždy by za ním měla následovat část s provedením.

Prováděcí sekce

Prováděcí část je hlavní a povinná část, která ve skutečnosti spouští kód napsaný v ní. Protože PL / SQL očekává spustitelné příkazy, tento blok nemůže být prázdný a musí mít alespoň jeden platný řádek spustitelného souboru. Několik dalších charakteristik této části:

  • Může obsahovat jak kód PL/SQL, tak kód SQL.
  • Může obsahovat jeden nebo více bloků uvnitř jako vnořené bloky.
  • Začíná to klíčovým slovem „BEGIN“.
  • Mělo by za ním následovat buď 'END', nebo sekce pro ošetření výjimek, pokud je přítomna.

Sekce vyřizování výjimek

Výjimky jsou nevyhnutelné chyby, ke kterým dochází za běhu, a jejich ošetření Oracle poskytuje sekci pro zpracování výjimek v blocích. Tato sekce může také obsahovat příkazy PL/SQL a je volitelná.

  • Toto je sekce, kde se ošetřuje výjimka vyvolaná v prováděcím bloku.
  • Je to poslední část bloku PL/SQL.
  • Ovládání z této sekce se nikdy nemůže vrátit do bloku provádění.
  • Začíná to klíčovým slovem „VÝJIMKA“.
  • Vždy by mělo následovat klíčové slovo „END“.

Klíčové slovo 'END' označuje konec bloku PL/SQL.

Syntaxe bloku PL/SQL

Níže je uvedena syntaxe struktury bloku PL/SQL.

Syntaxe bloků PL/SQL

DECLARE --optional
<declarations>

BEGIN --mandatory
<executable statements. At least one executable statement is mandatory>

EXCEPTION --optional
<exception handles>

END; --mandatory
/

Poznámka: Za blokem by měl vždy následovat znak '/', který odešle kompilátoru informaci o konci bloku.

Typy bloků PL/SQL

Bloky PL/SQL jsou převážně dvojího typu:

  1. Anonymní bloky
  2. Pojmenované bloky

Oba jsou níže stručně porovnány, než je každý z nich popsán.

Vzhled Anonymní blok Pojmenovaný blok
Má jméno Ne Ano
Uloženo v databázi Ne Ano, jako objekt
Začíná s PROHLÁSIT nebo ZAČÍT CREATE
Opakované použití Pouze stejná relace Volné kdykoli

Anonymní bloky

Anonymní bloky jsou bloky PL/SQL, které nemají přiřazen žádný název. Musí být vytvořeny a použity ve stejné relaci, protože nejsou uloženy na serveru jako databázové objekty.

Protože nejsou uloženy v databázi, nevyžadují žádný samostatný krok kompilace. Jsou zapsány a spuštěny přímo a kompilace a spuštění probíhají v jednom procesu. Několik dalších charakteristik:

  • Tyto bloky nemají žádný referenční název.
  • Začínají klíčovým slovem „DEKLARUJ“ nebo „ZAČÍT“.
  • Protože nemají referenční název, nelze je uložit pro pozdější použití a musí být vytvořeny a spuštěny ve stejné relaci.
  • Mohou volat jiné pojmenované bloky, ale volání anonymního bloku není možné, protože na něj nemá žádný odkaz.
  • Mohou obsahovat vnořený blok, který je pojmenovaný nebo anonymní, a mohou být také vnořeny do libovolného bloku.
  • Mohou mít všechny tři části, z nichž část o provedení je povinná a další dvě jsou volitelné.

Pojmenované bloky

Pojmenované bloky mají specifický a jedinečný název. Jsou uloženy jako databázové objekty na serveru, takže se na ně lze odkazovat nebo je používat, dokud jsou přítomny. Proces kompilace pojmenovaných bloků probíhá samostatně, když jsou vytvořeny jako databázové objekty. Několik dalších charakteristik:

  • Tyto bloky lze volat z jiných bloků.
  • Struktura bloku je stejná jako u anonymního bloku, až na to, že nikdy nezačíná řetězcem 'DECLARE'. Místo toho začíná řetězcem 'CREATE', který dává kompilátoru pokyn k vytvoření bloku jako databázového objektu.
  • Tyto bloky mohou být vnořeny do jiných bloků a mohou také obsahovat vnořené bloky.
  • Pojmenované bloky jsou v zásadě dvou typů:
  1. Postup
  2. funkce

Více se o těchto pojmenovaných blocích dozvíte v průvodci postupy a funkce.

Nejčastější dotazy

Pouze sekce provádění, která začíná BEGIN a končí END. Sekce deklarace a ošetření výjimek jsou volitelné a lze je vynechat, pokud nejsou potřeba.

Anonymní blok nemá název, není uložen a běží ve stejné relaci. Pojmenovaný blok, například procedura nebo funkce, je uložen jako databázový objekt a lze jej volat opakovaně.

V nástrojích jako SQL*Plus lomítko na vlastním řádku informuje kompilátor, že blok je kompletní a měl by být spuštěn. Bez něj nástroj stále čeká na další vstup.

Ano. Umělá inteligence může logiku zabalit do hlavičky CREATE PROCEDURE, přidat parametry a přesunout deklarace na správné místo. Otestujte výsledek, protože uložená verze může vyžadovat explicitní režimy parametrů a ošetření chyb.

Ano. Sekce deklarace a výjimky jsou nezávislé možnosti. Blok může začínat na BEGIN, přeskočit deklarace a stále obsahovat sekci EXCEPTION před END pro zachycení chyb za běhu.

Shrňte tento příspěvek takto: