PL/SQL je blokově strukturovaný jazyk, který umožňuje vývojářům kombinovat sílu SQL s procedurálními příkazy. Všechny příkazy bloku jsou předány enginu oracle všechny najednou, což zvyšuje rychlost zpracování a snižuje provoz.
Základy PL/SQL
- •PL/SQL je zkratka pro Procedural Language extensions k Structured Query Language (SQL).
- PL/SQL je kombinací SQL spolu s procedurálními vlastnostmi programovacích jazyků.
- Oracle používá PL/SQL engine ke zpracování PL/SQL příkazů.
- PL/SQL obsahuje prvky procedurálního jazyka, jako jsou podmínky a smyčky. Umožňuje deklaraci konstant a proměnných, procedur a funkcí, typů a proměnných těchto typů a triggerů.
Nevýhody SQL:
- SQL neposkytuje programátorům techniku kontroly stavu, smyčkování a větvení.
- Příkazy SQL jsou předávány do jádra Oracle jeden po druhém, což zvyšuje provoz a snižuje rychlost.
- SQL nemá možnost kontroly chyb během manipulace s daty.
Vlastnosti PL/SQL:
- PL/SQL je v podstatě procedurální jazyk, který poskytuje funkcionalitu rozhodování, iteraci a mnoho dalších funkcí procedurálních programovacích jazyků.
- PL/SQL může provádět několik dotazů v jednom bloku pomocí jediného příkazu.
- Je možné vytvořit jednotku PL/SQL, jako jsou procedury, funkce, balíčky, spouštěče a typy, které jsou uloženy v databázi pro opětovné použití aplikacemi.
- PL/SQL poskytuje funkci pro zpracování výjimky, která se vyskytuje v PL/SQL bloku známém jako blok zpracování výjimek.
- Aplikace napsané v PL/SQL jsou přenosné na počítačový hardware nebo operační systém, kde je v provozu Oracle.
- PL/SQL Nabízí rozsáhlou kontrolu chyb.
Rozdíly mezi SQL a PL/SQL:
| SQL | PL/SQL |
| SQL je jediný dotaz, který se používá k provádění operací DML a DDL. | PL/SQL je blok kódů, který se používá k zápisu celých programových bloků / procedur / funkcí atd. |
| Je deklarativní, která definuje, co je třeba udělat, spíše než jak je třeba věci udělat. | PL/SQL je procedurální, která definuje, jak je třeba věci udělat. |
| Provést jako jeden příkaz. | Provést jako celý blok. |
| Používá se hlavně pro manipulaci s daty. | Používá se hlavně k vytvoření aplikace. |
| Nemůže v něm obsahovat kód PL/SQL. | Je to rozšíření SQL, takže může obsahovat SQL. |
Struktura PL/SQL bloku:
co je podání adresáře
PL/SQL rozšiřuje SQL přidáním konstrukcí nalezených v procedurálních jazycích, což vede ke strukturnímu jazyku, který je výkonnější než SQL. Základní jednotkou v PL/SQL je blok. Všechny PL/SQL programy se skládají z bloků, které lze do sebe vnořovat.
Každý blok obvykle provádí v programu logickou akci. Blok má následující strukturu:
DECLARE declaration statements; BEGIN executable statements EXCEPTIONS exception handling statements END;>
- Část deklarace začíná na PROHLÁSIT klíčové slovo, ve kterém lze deklarovat proměnné, konstanty, záznamy jako kurzory, které dočasně ukládají data. V podstatě se skládá z definice PL/SQL identifikátorů. Tato část kódu je volitelná.
- Sekce provedení začíná ZAČÍT a končí s KONEC klíčové slovo.Toto je povinná část a zde je programová logika napsána tak, aby vykonávala jakýkoli úkol, jako jsou smyčky a podmíněné příkazy. Podporuje všechny DML příkazy, DDL příkazy a také vestavěné funkce SQL*PLUS.
- Část výjimek začíná na VÝJIMKA keyword.Tato část je volitelná a obsahuje příkazy, které se provedou, když dojde k chybě běhu. Jakékoli výjimky lze vyřešit v této sekci.
PL/SQL identifikátory
Existuje několik identifikátorů PL/SQL, jako jsou proměnné, konstanty, procedury, kurzory, spouštěče atd.
- Proměnné : Stejně jako několik jiných programovacích jazyků musí být proměnné v PL/SQL deklarovány před jejich použitím. Měly by mít také platný název a datový typ. Syntaxe pro deklaraci proměnných:
variable_name datatype [NOT NULL := value ];>
- Příklad, který ukazuje, jak deklarovat proměnné v PL/SQL:
C
SQL>SET SERVEROUTPUT ON;> SQL>DECLARE> >var1 INTEGER;> >var2 REAL;> >var3 varchar2(20) ;> BEGIN> >null;> END;> /> |
>
>
- Výstup:
PL/SQL procedure successfully completed.>
- Vysvětlení:
- NASTAVTE VÝSTUP SERVERU ZAPNUTO : Používá se k zobrazení vyrovnávací paměti používané dbms_output.
- var1 INTEGER: Je to deklarace proměnné, pojmenované var1 který je celočíselného typu. Existuje mnoho dalších datových typů, které lze použít jako float, int, real, smallint, long atd. Podporuje také proměnné používané v SQL, stejně jako NUMBER(prec, scale), varchar, varchar2 atd.
- Procedura PL/SQL byla úspěšně dokončena.: Zobrazí se, když je kód zkompilován a úspěšně proveden.
- Lomítko (/) za END;: Lomítko (/) říká SQL*Plus, aby provedl blok.
- Operátor přiřazení (:=) : Používá se k přiřazení hodnoty proměnné.
- Zobrazení výstupu : Výstupy jsou zobrazeny pomocí DBMS_OUTPUT, což je vestavěný balíček, který umožňuje uživateli zobrazovat výstup, ladicí informace a odesílat zprávy z PL/SQL bloků, podprogramů, balíčků a spouštěčů. Podívejme se na příklad, jak zobrazit zprávu pomocí PL/SQL:
C
SQL>SET SERVEROUTPUT ON;> SQL>DECLARE> >var varchar2(40) :=>'I love GeeksForGeeks'> ;> >BEGIN> >dbms_output.put_line(var);> >END;> >/> |
>
>
- Výstup:
I love GeeksForGeeks PL/SQL procedure successfully completed.>
- Vysvětlení:
- dbms_output.put_line : Tento příkaz se používá k přesměrování výstupu PL/SQL na obrazovku.
- Pomocí komentářů : Stejně jako v mnoha jiných programovacích jazycích, také v PL/SQL lze do kódu vkládat komentáře, které nemají na kód žádný vliv. Existují dvě syntaxe pro vytváření komentářů v PL/SQL:
- Jednořádkový komentář: Chcete-li vytvořit jednořádkový komentář, symbol– –se používá.
- Víceřádkový komentář: Chcete-li vytvořit komentáře, které se rozkládají na několika řádcích, symbol/*a*/se používá.
- Přebírání vstupu od uživatele : Stejně jako v jiných programovacích jazycích, i v PL/SQL můžeme převzít vstup od uživatele a uložit jej do proměnné. Podívejme se na příklad, který ukazuje, jak převzít vstup od uživatelů v PL/SQL:
C
příkladem open source operačního systému je
SQL>SET SERVEROUTPUT ON;> SQL>DECLARE> >-- taking input>for> variable a> >a number := &a;> > >-- taking input>for> variable b> >b varchar2(30) := &b;> >BEGIN> >null;> >END;> >/> |
>
>
- Výstup:
Enter value for a: 24 old 2: a number := &a; new 2: a number := 24; Enter value for b: 'GeeksForGeeks' old 3: b varchar2(30) := &b; new 3: b varchar2(30) := 'GeeksForGeeks'; PL/SQL procedure successfully completed.>
- (***) Podívejme se na příklad na PL/SQL, abychom demonstrovali všechny výše uvedené koncepty v jediném bloku kódu.
C
otevřete nabídku nastavení
--PL/SQL code to print sum of two numbers taken from the user.> SQL>SET SERVEROUTPUT ON;> SQL>DECLARE> > >-- taking input>for> variable a> >a integer := &a ;> > >-- taking input>for> variable b> >b integer := &b ;> >c integer ;> >BEGIN> >c := a + b ;> >dbms_output.put_line(>'Sum of '>||a||>' and '>||b||>' is = '>||c);> >END;> >/> |
>
>
Enter value for a: 2 Enter value for b: 3 Sum of 2 and 3 is = 5 PL/SQL procedure successfully completed.>
Prostředí PL/SQL:
Engine PL/SQL je umístěn v enginu Oracle. Engine Oracle dokáže zpracovat nejen jeden příkaz SQL, ale také blok mnoha příkazů. Volání enginu Oracle je třeba provést pouze jednou, aby bylo možné provést libovolný počet příkazů SQL, pokud tyto příkazy SQL jsou součástí bloku PL/SQL.