sql >> Database teknologi >  >> RDS >> Oracle

Kaldnotation for PL/SQL-underrutiner i Oracle-databasen

Da tidligere få tutorials handlede om PL/SQL-underrutiner såsom PL/SQL-funktioner og lagrede procedurer, bliver det obligatorisk at tale om deres kaldenotationer. At lære begreberne PL/SQL-underrutiner vil ikke blive betragtet som komplet, før vi også lærer deres kaldenotationer.

Hvad er kaldenotation for PL/SQL-underrutiner?

Kaldnotation er en måde at give værdier til parametrene for en underrutine, såsom PL/SQL-funktion eller en lagret procedure.

Typer af kaldenotationer til underrutiner

I Oracle PL/SQL er der 3 typer kaldenotationer. Disse er:

  1. Positionsnotation
  2. Navnet notation og
  3. Blandet opkaldsnotation

Positionelle opkaldsnotationer

Positionel notation er den mest almindelige kaldenotation, som du kan se i næsten alle computerprogrammeringssprog. I positionsnotation skal vi angive værdien for hver formel parameter på en sekventiel måde. Det betyder, at du skal angive værdierne for de formelle parametre i samme rækkefølge, som de blev erklæret i proceduren eller i funktionen.

I positionsnotation skal datatypen og positionen af ​​den aktuelle parameter matche den formelle parameter.

Foreslået læsning:Faktiske parametre vs. formelle parametre

Eksempel:Positionel notation til at kalde PL/SQL-underrutiner.

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;
 /

Dette er det samme eksempel, som vi gjorde i PL/SQL Tutorial 42 om, hvordan man opretter en lagret procedure med parametre om end nogle mindre ændringer. Hvis vi nu bruger positionskaldende notation, skal vi levere værdierne til begge parametrene i ovenstående procedure på samme måde, som de er deklareret.

Opkald med lagret procedure ved hjælp af positionsnotation i Oracle-databasen

EXECUTE emp_sal(40,2);

I dette simple procedurekald svarer værdien 40 til den formelle parameter dep_id og værdi 2 svarer til parameteren sal_raise.

Navngivne opkaldsnotationer

Navngivne kaldenotationer lader dig sende værdier til de formelle parametre ved hjælp af deres navne. Dette vil igen lade dig tildele værdier til kun påkrævede eller sige obligatoriske parametre.

Denne kaldenotation er nyttig, når du har en underrutine med parametre, hvor nogle af disse parametre er obligatoriske, og nogle er valgfrie, og du kun vil overføre værdierne til de obligatoriske.

Foreningsoperatør

For at tildele værdier til de formelle parametre ved hjælp af deres navne bruger vi associationsoperator. Det er en kombination af lig med (=)-tegn og større end (>)-tegn. Vi skriver navnet på den formelle parameter til venstre side af operatoren og den værdi, du vil tildele til højre side af operatoren.

Eksempel på navngivet opkaldsnotation til at kalde en PL/SQL-underrutiner

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;
/

Ovenstående funktion har 3 parametre. Blandt disse 3 parametre er 2 obligatoriske, og 1 er valgfri med standardværdien 0.

Du kan kalde denne funktion ved hjælp af positionsnotation. Men det har en begrænsning, som du skal opfylde, og det er, at du skal levere værdier til alle de formelle parametre i samme rækkefølge, som de er deklareret, og datatypen af ​​formelle og faktiske parametre skal matche.

Så hvis du vil udelade den valgfri parameter og vil bruge deres standardværdi, eller du har bare glemt rækkefølgen af ​​parameteren, hvor de blev erklæret! Så vil det være lidt svært for dig at kalde ovenstående subrutine ved hjælp af positionsnotation. I et sådant scenarie kan du drage fordel af navngivet opkaldsnotation. Denne kaldenotation vil give dig den ønskede fleksibilitet til at kalde dine underrutiner.

PL/SQL-funktionsopkald ved hjælp af navngivet opkaldsnotation i Oracle-databasen

DECLARE
  var_result  NUMBER;
BEGIN
  var_result := add_num(var_3 => 5, var_1 =>2);
  DBMS_OUTPUT.put_line('Result ->' || var_result);
END;

Jeg har forklaret PL/SQL-funktionsopkaldet i detaljer i videovejledningen om det samme emne på min YouTube-kanal.

Blandet opkaldsnotation til opkald til PL/SQL-underrutiner

Som navnet antyder i blandet kaldenotation kan du kalde subrutiner ved at bruge kombinationen af ​​navngivne såvel som positionelle kaldenotationer. Blandet kaldenotation er meget nyttigt, hvor parameterlisten er defineret med alle obligatoriske parametre først og valgfrie parametre derefter.

Eksempel på blandet opkaldsnotation til at kalde PL/SQL-underrutiner

Her er den anonyme blok, hvor vi kalder den samme funktion add_num ( ), som vi kodede, når vi lavede navngivne kaldenotationer.

DECLARE
  var_result  NUMBER;
BEGIN
  var_result := add_num(var_1 => 10, 30 ,var_3 =>19);
  DBMS_OUTPUT.put_line('Result ->' || var_result);
END;

Det er sådan, vi bruger blandet kaldenotation til at kalde PL/SQL-underrutiner.

Prøv det selv

Brug viden fra ovenstående begreber, prøv at løse følgende spørgsmål:

Skriv en PL/SQL-funktion med parametre til at bytte to tal, og kald den funktion ved hjælp af blandet kaldenotation.

Du kan dele din kode eller øjebliksbilledet af din kode med mig på mit sociale medie [Twitter // Facebook].

Håber du nød at læse. Sørg for at like og dele denne blog. Tak og god dag.


  1. MySQL heltalsfelt returneres som streng i PHP

  2. Oracle Slet rækker, der matcher flere værdier

  3. Indlæs Excel-dataark til Oracle-databasen

  4. FEJL:kolonne med relation eksisterer ikke PostgreSQL, Kan ikke køre indsæt forespørgsel