sql >> Databáze >  >> RDS >> Oracle

Volání notace pro podprogramy PL/SQL v databázi Oracle

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:

  1. Polohový zápis
  2. Pojmenovaná notace a
  3. 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.


  1. Jak opravit „překročení systémových prostředků“ při migraci na Windows 10

  2. Použití aliasového sloupce v klauzuli where v Postgresql

  3. Odstraňte duplicitní řádky na serveru SQL Server

  4. Transformace podmíněného rozdělení:Exportujte data ze serveru SQL Server do databází Oracle a MySQL