Vzhledem k tomu, že několik předchozích tutoriálů bylo o podprogramech PL/SQL, jako jsou funkce PL/SQL a uložené procedury, stává se povinným mluvit o jejich volacích notacích. Naučit se koncepty podprogramů PL/SQL nebude považováno za dokončené, dokud se nenaučíme také jejich zápisy volání.
Co je volací notace pro podprogramy PL/SQL?
Volání zápisu je způsob, jak poskytnout hodnoty parametrům podprogramu, jako je funkce PL/SQL nebo uložená procedura.
Typy zápisů volání pro podprogramy
V Oracle PL/SQL existují 3 typy volacích notací. Jsou to:
- Polohový zápis
- Pojmenovaná notace a
- Smíšený zápis volání
Zápisy pozičního volání
Poziční zápis je nejběžnější volací zápis, který můžete vidět téměř v každém počítačovém programovacím jazyce. V pozičním zápisu musíme zadat hodnotu pro každý formální parametr postupně. To znamená, že musíte zadat hodnoty formálních parametrů ve stejném pořadí, v jakém byly deklarovány v proceduře nebo ve funkci.
V pozičním zápisu se datový typ a pozice skutečného parametru musí shodovat s formálním parametrem.
Doporučená četba:skutečné parametry vs. formální parametry
Příklad:Poziční zápis pro volání podprogramů PL/SQL.
CREATE OR REPLACE PROCEDURE emp_sal (dep_id NUMBER, sal_raise NUMBER) IS BEGIN UPDATE employees SET salary = salary * sal_raise WHERE department_id = dep_id; DBMS_OUTPUT.PUT_LINE ('salary updated successfully'); END; /
Toto je stejný příklad, který jsme provedli v PL/SQL Tutoriálu 42 o tom, jak vytvořit uloženou proceduru s parametry, i když s některými menšími změnami. Pokud nyní použijeme notaci pozičního volání, pak musíme zadat hodnoty oběma parametrům výše uvedené procedury stejným způsobem, jakým jsou deklarovány.
Volání uložené procedury pomocí pozičního zápisu v databázi Oracle
EXECUTE emp_sal(40,2);
V tomto jednoduchém volání procedury hodnota 40 odpovídá formálnímu parametru dep_id a hodnota 2 odpovídá parametru sal_raise.
Zápisy pojmenovaných hovorů
Notace pojmenovaného volání vám umožňuje předávat hodnoty formálním parametrům pomocí jejich jmen. To vám zase umožní přiřadit hodnoty pouze povinným nebo řekněme povinným parametrům.
Tento zápis volání je užitečný, když máte podprogram s parametry, kde některé z těchto parametrů jsou povinné a některé volitelné a chcete předat hodnoty pouze povinným.
Operátor přidružení
Pro přiřazení hodnot formálním parametrům pomocí jejich názvů používáme asociační operátor. Je to kombinace znaménka rovná se (=) a znaménku většího než (>). Jméno formálního parametru zapíšeme na levou stranu operátoru a hodnotu, kterou chcete přiřadit, na pravou stranu operátoru.
Příklad zápisu pojmenovaného volání pro volání podprogramů PL/SQL
CREATE OR REPLACE FUNCTION add_num (var_1 NUMBER, var_2 NUMBER DEFAULT 0, var_3 NUMBER ) RETURN NUMBER IS BEGIN RETURN var_1 + var_2 + var_3; END; /
Výše uvedená funkce má 3 parametry. Z těchto 3 parametrů jsou 2 povinné a 1 volitelný s výchozí hodnotou 0.
Tuto funkci můžete volat pomocí pozičního zápisu. Má to ale omezení, které musíte splnit, a to, že musíte zadat hodnoty všem formálním parametrům ve stejném pořadí, v jakém jsou deklarovány, a datový typ formálních a skutečných parametrů se musí shodovat.
Pokud tedy chcete vynechat volitelný parametr a chcete použít jejich výchozí hodnotu nebo jste jen zapomněli pořadí parametru, ve kterém byly deklarovány! Pak pro vás bude mírně obtížné volat výše uvedený podprogram pomocí pozičního zápisu. V takovém scénáři můžete využít zápis pojmenovaného volání. Tento zápis volání vám poskytne požadovanou flexibilitu při volání vašich podprogramů.
Volání funkce PL/SQL pomocí zápisu pojmenovaného volání v databázi Oracle
DECLARE var_result NUMBER; BEGIN var_result := add_num(var_3 => 5, var_1 =>2); DBMS_OUTPUT.put_line('Result ->' || var_result); END;
Volání funkce PL/SQL jsem podrobně vysvětlil ve výukovém videu na stejné téma na mém kanálu YouTube.
Zápis smíšeného volání pro volání podprogramů PL/SQL
Jak název napovídá, ve smíšeném volacím zápisu můžete volat podprogramy pomocí kombinace pojmenovaného i pozičního volacího zápisu. Smíšený zápis volání je velmi užitečný, kde je seznam parametrů definován se všemi povinnými parametry jako první a volitelnými parametry.
Příklad zápisu smíšeného volání pro volání podprogramů PL/SQL
Zde je anonymní blok, ve kterém voláme stejnou funkci add_num ( ), kterou jsme zakódovali při zápisu pojmenovaného volání.
DECLARE var_result NUMBER; BEGIN var_result := add_num(var_1 => 10, 30 ,var_3 =>19); DBMS_OUTPUT.put_line('Result ->' || var_result); END;
Takto používáme smíšenou volací notaci pro volání PL/SQL podprogramů.
Vyzkoušejte to sami
Pomocí znalostí z výše uvedených konceptů zkuste vyřešit následující otázku:
Napište funkci PL/SQL s parametry pro záměnu dvou čísel a zavolejte tuto funkci pomocí kombinovaného zápisu volání.
Svůj kód nebo snímek kódu se mnou můžete sdílet na mé sociální síti [Twitter // Facebook].
Doufám, že se vám čtení líbilo. Nezapomeňte dát like a sdílet tento blog. Děkuji a přeji hezký den.