PL/SQL je procedurální jazyk, který překonává nedostatky, kterým čelí strukturovaný dotazovací jazyk. Je to rozšíření SQL a dokonce můžeme SQL dotazy bez problémů používat v jakékoli PL/SQL aplikaci nebo programu. V tomto tutoriálu PL/SQL si podrobně projdeme základní pojmy PL/SQL. Tento článek obsahuje následující témata.
- Co je PL/SQL?
- Funkce
- PL/SQL vs SQL
- Blokovat struktury v PL/SQL
- Proměnné PL/SQL
- Funkce v PL/SQL
- Procedura PL/SQL
- Vnořený blok
- Prohlášení IF
- Prohlášení CASE
- Příkaz smyčky
- Příkaz While Loop
- Pro příkaz Loop
- Výjimečné zacházení
Co je PL/SQL?
Zkratka znamená rozšíření procedurálního jazyka na strukturovaný dotazovací jazyk. Oracle vytvořil PL/SQL, který rozšiřuje některá omezení SQL a poskytuje komplexnější řešení pro vytváření kritických aplikací běžících na databázi Oracle.
Funkce
PL/SQL poskytuje funkce procedurálního jazyka, jako je rozhodování, iterace atd.
Pomocí jediného příkazu může PL/SQL provést řadu dotazů.
Můžeme také znovu použít jednotky PL/SQL, jako jsou funkce, spouštěče, procedury atd., které jsou po vytvoření uloženy v databázi.
PL/SQL má také blok zpracování výjimek, který zpracovává výjimky v PL/SQL.
Rozsáhlá kontrola chyb je také možná pomocí PL/SQL
Aplikace napsané v PL/SQL jsou přenosné na jiný hardware a operační systémy za předpokladu, že oracle musí být funkční.
PL/SQL vs SQL
SQL | PL/SQL |
SQL je jediný dotaz, který se používá k provádění operací DDL a DML | PL/SQL je blok kódů, který se používá k definování celého programu nebo procedury/funkce atd |
Ve skutečnosti nedefinuje, jak je třeba věci udělat, spíše definuje, co je třeba udělat | PL/SQL definuje, jak se věci mají dělat |
Provede jeden příkaz | Provede blok příkazů najednou. |
SQL se používá hlavně k manipulaci s daty | PL/SQL se naproti tomu používá k vytváření aplikací |
Nemůže obsahovat kód PL/SQL | Jelikož se jedná o rozšíření SQL, může obsahovat kód SQL |
Blokovat struktury v PL/SQL
PL/SQL obvykle organizuje kód do bloků. Blok kódu bez názvu je znám jako anonymní blok. Je známý jako anonymní blok, protože není uložen v databázi Oracle. Pojďme se podívat na anonymní blok v PL/SQL.
[DECLARE] deklarační příkazy;[BEGIN] prováděcí příkazy; [EXCEPTION] výjimky;END;/
Při pohledu na výše uvedený diagram vidíme, že struktura bloku je rozdělena do čtyř částí, tj. deklarace, začátek, výjimka a konec. Pokusme se pochopit, jak funguje bloková struktura v PL/SQL. Ze všech těchto sekcí je sekce provádění povinná a všechny ostatní jsou volitelné.
DECLARE klíčové slovo se používá pro sekci deklarace se používá k deklaraci datových typů a struktur, jako jsou proměnné, funkce atd.
BEGIN klíčové slovo se používá pro sekci provádění. Je povinný a obsahuje všechny příkazy, které je třeba provést. V tomto bloku je definována obchodní logika, v tomto bloku můžeme použít jak procedurální, tak SQL příkazy.
VÝJIMKA klíčové slovo se používá pro sekci výjimek. Obsahuje všechny příkazy výjimek.
END klíčové slovo označuje konec bloku a zpětné lomítko „/“ říká nástroji, který používáte (Oracle Database Tool) ke spuštění bloku PL/SQL.
Zde je jednoduchý příklad, který ukazuje, jak můžeme použít kód PL/SQL.
BEGIN NULL;END;/
Nyní, když víme, jak funguje bloková struktura v PL/SQL, pojďme pochopit různé aspekty PL/SQL, jako je deklarace, pojmenování a přiřazování hodnot k proměnným.
P>Proměnné PL/SQL
Proměnná v PL/SQL je v podstatě název, který se mění, nebo dočasné úložiště, které podporuje určitý typ dat. Pojďme se podívat na to, jak můžeme použít proměnné v programu PL/SQL.
Pravidla pro pojmenování proměnných
PL/SQL se řídí následujícími pravidly pro pojmenování proměnných.
Proměnná nesmí mít více než 31 znaků
Název proměnné by měl začínat znakem ASCII. Protože PL/SQL rozlišuje velká a malá písmena, velké a malé písmeno budou různé proměnné.
Za prvním znakem musí být speciální znak ($,_ ) nebo libovolné číslo.
Konvence pojmenování
Pro použití proměnných použijte následující konvence pojmenování uvedené níže.
Předpona | Typ dat |
v_ | VARCHAR2 |
n_ | NUMBER |
t_ | TABLE |
r_ | ROW |
d_ | DATUM |
b_ | BOOLEAN |
Prohlášení
Zkusme pochopit, jak se deklarace proměnných provádí v PL/SQL
Deklarace obsahuje název proměnné následovaný datovým typem a oddělený středníkem. Následuje příklad, který ukazuje, jak můžete deklarovat proměnnou v PL/SQL.
DECLARE v_name VARCHAR(25); n_age NUMBER(3);BEGIN NULL;END;
Můžete také přidat délku datového typu, jak jsme to udělali v příkladu výše.
Kotvy
Kotva v podstatě odkazuje na použití klíčového slova %TYPE, které deklaruje proměnnou s datovým typem spojeným s datovým typem konkrétního sloupce v tabulce.
Podívejte se na příklad, abyste to pochopili. Předpokládejme, že máme tabulku ZAMĚSTNANCI, můžeme kotvy použít následujícím způsobem.
DECLARE v_name EMPLOYEE.NAME%TYPE; n_age EMPLOYEE.AGE%TYPE;BEGIN NULL;END;/
Přiřazení
Přiřazení proměnných je celkem snadné, k přiřazení hodnot proměnné můžeme použít operátor přiřazení. Následující příklad ukazuje, jak můžeme přiřadit hodnoty proměnné.
DECLARE v_name VARCHAR(20); n_course VARCHAR(10);BEGIN v_name ="edureka"; v_course ="sql";END;/
Inicializace
Hodnotu proměnné můžeme inicializovat i v sekci deklarace. Následující příklad ukazuje, jak můžeme inicializovat hodnoty do proměnné.
DECLAREv_name VARCHAR(20) ="edureka";n_course VARCHAR(10) ="sql";BEGIN NULL;END;/
Nyní, když víme, jak můžeme pracovat s proměnnými, zkusme pochopit, jak budeme používat funkce v PL/SQL.
Funkce v PL/SQL
Funkce v PL/SQL je v podstatě pojmenovaný blok, který vrací hodnotu. Je také známý jako podprogram nebo podprogram. Následující syntaxe ukazuje, jak můžeme používat funkce v PL/SQL.
CREATE [OR REPLACE] FUNCTION function_name [( parametr_1 [IN] [OUT] typ_dat, parametr_2 [IN] [OUT] typ_dat, parametr_N [IN] [OUT] typ_dat] RETURN return_data_type IS BEGIN příkazy return return_data_type; VÝJIMKA END; /
Nejprve musíte za klíčovým slovem zadat název funkce. Název funkce musí začínat slovesem. Funkce může mít žádný, jeden nebo více parametrů, které uvedeme v parametrech. Musíme explicitně specifikovat datový typ každého parametru a pak přichází režim, který může být jedním z následujících.
IN – Parametr IN je parametr pouze pro čtení.
OUT – Je to parametr pouze pro zápis
IN OUT – Parametr IN OUT je parametr čtení i zápis.
Zde je jednoduchý příklad, který ukazuje, jak používáme funkce v PL/SQL.
VYTVOŘIT NEBO NAHRADIT FUNKCI try_parse( iv_number IN VARCHAR2) RETURN NUMBER ISBEGIN RETURN to_number(iv_number); VÝJIMKA, KDYŽ ostatní POTOM VRÁTÍ NULL;END;
Volání funkce
Zkusme zavolat funkci, kterou jsme vytvořili v anonymním bloku v následujícím příkladu.
NASTAVIT VÝSTUP SERVERU NA VELIKOST 1000000;DECLARE n_x číslo; číslo n_y; n_z číslo;BEGIN n_x :=try_parse('256'); n_y :=try_parse('29.72'); n_z :=try_parse('pqrs'); DBMS_OUTPUT.PUT_LINE(n_x); DBMS_OUTPUT.PUT_LINE(n_y); DBMS_OUTPUT.PUT_LINE(n_z);END;/
Funkci můžeme volat také v příkazu SELECT. Nyní, když víme, jak můžeme používat funkce v PL/SQL, zkusme pochopit, jak pracujeme s procedurami v PL/SQL.
Procedura PL/SQL
Procedura je v podstatě blok, který provádí konkrétní úkol. Pomocí procedury můžeme zabalit nebo zapouzdřit komplexní obchodní logiku a znovu ji použít v aplikační i databázové vrstvě.
Podívejme se na jednoduchý příklad, abychom pochopili, jak postup funguje v PL/SQL
VYTVOŘTE NEBO NAHRAĎTE POSTUP adjust_salary( in_employee_id IN EMPLOYEES.EMPLOYEE_ID%TYPE, in_percent IN NUMBER) ISBEGIN -- aktualizace platu zaměstnance AKTUALIZACE zaměstnanců SET plat =plat + plat * v_procentech / 100 WHERE zamestnanec_id =in_id;END>Ve výše uvedeném příkladu máme dva parametry, procedura upravuje plat o dané procento a klíčové slovo UPDATE aktualizuje hodnotu v informacích o platu.
Záhlaví postupu
Část před klíčovým slovem IS se nazývá záhlaví procedury. Následuje několik ukazatelů, které je třeba znát při práci s procedurami.
schéma – Je to volitelný název schématu, do kterého procedura patří.
jméno – Název procedury, která by měla začínat slovesem.
parametry – Je to volitelný seznam parametrů.
AUTHID – Určuje, zda se procedura spustí s oprávněním aktuálního uživatele nebo původního vlastníka procedury.
Tělo postupu
Vše, co následuje za klíčovým slovem IS, se nazývá tělo procedury. V těle procedury máme příkazy deklarace, výjimky a provedení. Na rozdíl od funkce se klíčové slovo RETURN v proceduře používá k zastavení provádění a vrácení řízení volajícímu.
Volání procedury
Podívejme se, jak můžeme volat proceduru v PL/SQL.
EXEC název_procedury(param1,param2…paramN);
Procedury můžeme volat bez parametrů pouze pomocí klíčového slova EXEC a názvu procedury. Nyní, když víme, jak můžeme pracovat s procedurami, zkusme pochopit, jak se v PL/SQL používají vnořené bloky.
Vnořený blok
Vnořený blok není nic jiného než kombinace jednoho nebo více bloků PL/SQL pro lepší kontrolu nad prováděním a výjimečné zacházení s programem.
Zde je jednoduchý příklad vnořeného bloku.
NASTAVTE VÝSTUP SERVERU NA VELIKOST 1000000;DECLARE n_emp_id EMPLOYEES.EMPLOYEE_ID%TYPE :=&emp_id1;BEGIN DECLARE n_emp_id Staff.employee_id%TYPE :=&emp_id2; v_name zaměstnanců.first_name%TYPE; BEGIN SELECT křestní_jméno INTO v_jméno FROM zaměstnanců WHERE zaměstnanec_id =n_emp_id; DBMS_OUTPUT.PUT_LINE('Jméno zaměstnance ' || n_emp_id || ' je ' || v_name); VÝJIMKA WHEN no_data_found THEN DBMS_OUTPUT.PUT_LINE('Zaměstnanec ' || n_emp_id || ' nenalezeno'); END;END;/
Vnější blok PL/SQL ve výše uvedeném příkladu je známý jako rodičovský blok nebo obklopující blok, vnitřní blok je na druhé straně znám jako podřízený blok nebo uzavřený blok.
Není dobrý nápad používat proměnné se stejnými názvy v obou blocích, protože během provádění proměnná podřízeného bloku přepíše proměnnou nadřazeného bloku. Stává se to proto, že PL/SQL dává první prioritu proměnné uvnitř svého vlastního bloku.
Blokovaný štítek
Tento problém můžeme překonat pomocí štítku bloku, který nám pomáhá vytvářet odkazy na proměnné uvnitř bloků pomocí štítku.
Zde je jednoduchý příklad, který ukazuje, jak můžeme použít štítek bloku.
<>DECLARE...BEGIN...END;
Použití štítku bloku pomáhá zlepšit čitelnost kódu, získat lepší kontrolu a vytvářet odkazy na bloky. Nyní, když víme, jak můžeme pracovat s vnořenými bloky, zkusme pochopit, jak funguje IF STATEMENT v PL/SQL.
Prohlášení IF
PL/SQL má tři VÝKAZY IF
KDYŽ-PAK – Je to nejjednodušší IF STATEMENT, pokud je podmínka pravdivá, příkazy se vykonají, pokud je podmínka nepravdivá, nedělá nic.
IF-THEN-ELSE – V tomto je přidána klauzule ELSE pro alternativní sekvenci příkazů.
IF-THEN-ELSEIF – Umožňuje nám provádět více testovacích podmínek v sekvenci.
Syntaxe IF-THEN
IF podmínka THEN sekvence_příkazů;END IF;
IF-THEN-ELSE Syntaxe
IF podmínka THEN sekvence_if_příkazů;ELSE sekvence_jiných_příkazů;END IF;
IF-THEN-ELSEIF Syntaxe
IF podmínka1 THEN sekvence_příkazů1ELSIF podmínka2 THEN sekvence_příkazů2ELSE sekvence_příkazů3END IF;
Nyní, když jsme s příkazem IF STATEMENT hotovi, podívejme se na příkaz CASE v PL/SQL.
Prohlášení CASE
Příkaz CASE v podstatě pomáhá při provádění sekvence příkazů na základě selektoru. Selektorem může být v tomto případě cokoliv, může to být proměnná, funkce nebo jednoduchý výraz. Zde je jednoduchý příklad, který ukazuje syntaxi příkazu CASE v PL/SQL.
[<>]PŘÍPAD [PRAVDA | selektor] WHEN výraz1 THEN sekvence_příkazů1; WHEN výraz2 THEN sekvence_příkazů2; ... WHEN výrazN THEN sekvence_příkazůN; [ELSE sekvence_příkazůN+1;]END CASE [název_štítku];
Ve výše uvedené syntaxi následuje za klíčovým slovem CASE selektor. PL/SQL vyhodnotí selektor pouze jednou, aby určil, který příkaz je třeba provést.
Za selektorem následuje klíčové slovo WHEN. Pokud výraz vyhovuje selektoru, provede se odpovídající příkaz za klíčovým slovem THEN.
Nyní, když víme, jak můžeme použít příkaz CASE, pokusme se porozumět tomu, jak použijeme příkazy smyčky v PL/SQL.
Příkaz smyčky
Příkaz smyčky v PL/SQL je iterativní příkaz, který umožňuje provést sekvenci příkazů vícekrát. Zde je jednoduchý příklad, který ukazuje syntaxi příkazu smyčky v PL/SQL.
LOOP sekvence_příkazů;END LOOP;
Mezi klíčovými slovy LOOP a END LOOP musí být alespoň jeden spustitelný příkaz.
Opakovat s příkazem EXIT
Příkazy EXIT a EXIT when umožňují opustit smyčku. Příkaz EXIT WHEN ukončí smyčku podmíněně, zatímco EXIT ukončí provádění bezpodmínečně.
LOOP ... EXIT WHEN podmínka;END LOOP;
Štítek smyčky
Návěští smyčky se používá ke kvalifikaci názvu proměnné čítače smyček při použití ve vnořené smyčce. Následuje syntaxe štítku smyčky.
<
Nyní, když víme, jak můžeme použít příkazy cyklu, podívejme se na příkazy cyklu while pro lepší pochopení.
Příkaz během smyčky
Příkaz smyčky WHILE můžeme použít, když není definován počet spuštění, dokud spuštění nezačne. Následující syntaxe se používá pro příkaz smyčky WHILE v PL/SQL.
WHILE conditionLOOP sekvence_příkazů;END LOOP;
Podmínka v syntaxi je logická hodnota nebo výraz, který se vyhodnotí jako PRAVDA, NEPRAVDA nebo NULL. Pokud je podmínka TRUE, příkazy se provedou, pokud je NEPRAVDA, provádění se zastaví a ovládací prvek přejde na další spustitelný příkaz.
Nyní, když víme, jak můžeme použít příkaz cyklu WHILE, podívejme se na příkaz cyklu FOR.
Pro příkaz Loop
Příkaz cyklu FOR v PL/SQL nám umožňuje provádět posloupnost příkazů pro určitý počet opakování. Následuje syntaxe pro použití příkazu smyčky FOR v PL/SQL
PRO loop_counter IN [REVERSE] lower_bound .. upper_boundLOOP sekvence_příkazů;END LOOP;
PL/SQL vytvoří lokální proměnnou loop_counter automaticky s datovým typem INTEGER pro smyčku, takže ji nemusíte explicitně deklarovat. Dolní hranice..horní hranice je rozsah, ve kterém smyčka iteruje. Také musíte mít alespoň jeden spustitelný příkaz mezi klíčovými slovy LOOP a END LOOP.
Nyní, když víme, jak můžeme použít smyčkové příkazy v PL/SQL, pojďme se podívat na výjimečné zacházení v PL/SQL.
Výjimečné zacházení
V PL/SQL je jakákoliv chyba považována za výjimku. Výjimku lze považovat za speciální podmínku, která může změnit nebo změnit tok provádění. V PL/SQL existují dva typy výjimek.
Systémová výjimka – Vyvolá ho běhový modul PL/SQL, když detekuje chybu.
Výjimka definovaná programátorem – Tyto výjimky definuje programátor v konkrétní aplikaci.
Definování výjimky
Výjimka v PL/SQL musí být deklarována, než může být vyvolána. Výjimku můžeme definovat pomocí klíčového slova EXCEPTION, jak jsme to udělali v příkladu níže.
EXCEPTION_NAME EXCEPTION;
K vyvolání výjimky používáme klíčové slovo RAISE.
RAISE EXCEPTION_NAME;
Takže to bylo vše o PL/SQL, doufám, že vám tento článek pomohl přidat hodnotu k vašim znalostem. Pro více informací o SQL nebo databázích se můžete podívat na náš komplexní seznam četby zde:Databáze Edureka .
Pokud si přejete absolvovat strukturované školení o MySQL, podívejte se na naše certifikační školení MySQL DBA který přichází s instruktorem vedeným živým školením a reálnými zkušenostmi z projektů. Toto školení vám pomůže porozumět MySQL do hloubky a pomůže vám dosáhnout zvládnutí tohoto předmětu.
Máte na nás otázku? Zmiňte to prosím v sekci komentářů „PL/SQL Tutorial “ a já se vám ozvu.