sql >> Database >  >> RDS >> Oracle

Aanroepnotatie voor PL/SQL-subroutines in Oracle Database

Aangezien eerdere tutorials over PL/SQL-subroutines gingen, zoals PL/SQL-functies en opgeslagen procedures, wordt het dus verplicht om over hun aanroepnotaties te praten. Het leren van de concepten van PL/SQL-subroutines wordt niet als compleet beschouwd totdat we ook hun aanroepnotaties leren.

Wat is aanroepnotatie voor PL/SQL-subroutines?

Het aanroepen van notatie is een manier om waarden te geven aan de parameters van een subroutine, zoals een PL/SQL-functie of een opgeslagen procedure.

Typen belnotaties voor subroutines

In Oracle PL/SQL zijn er 3 soorten aanroepnotaties. Dit zijn:

  1. Positienotatie
  2. Benoemde notatie en
  3. Gemengde belnotatie

Positieve oproepnotaties

Positionele notatie is de meest voorkomende roepnotatie die je in bijna elke computerprogrammeertaal kunt zien. In positionele notatie moeten we de waarde voor elke formele parameter op een sequentiële manier specificeren. Dit betekent dat u de waarden voor de formele parameters moet opgeven in dezelfde volgorde als waarin ze zijn gedeclareerd in de procedure of in de functie.

In positionele notatie moeten het datatype en de positie van de eigenlijke parameter overeenkomen met de formele parameter.

Voorgestelde lezing:werkelijke parameters versus formele parameters

Voorbeeld:positionele notatie voor het aanroepen van PL/SQL-subroutines.

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

Dit is hetzelfde voorbeeld dat we deden in PL/SQL Tutorial 42 over het creëren van een opgeslagen procedure met parameters, zij het met enkele kleine wijzigingen. Als we nu positionele aanroepnotatie gebruiken, moeten we de waarden leveren aan beide parameters van de bovenstaande procedure op dezelfde manier als waarop ze worden gedeclareerd.

Opgeslagen procedure-aanroep met positionele notatie in Oracle Database

EXECUTE emp_sal(40,2);

In deze eenvoudige procedureaanroep komt de waarde 40 overeen met de formele parameter dep_id en komt waarde 2 overeen met de parameter sal_raise.

Genoemde belnotaties

Met benoemde aanroepnotatie kunt u waarden doorgeven aan de formele parameters met behulp van hun naam. Hiermee kunt u op zijn beurt waarden toewijzen aan alleen vereiste of verplichte parameters.

Deze aanroepnotatie is handig als je een subroutine hebt met parameters waarbij sommige van die parameters verplicht zijn en sommige optioneel en je de waarden alleen aan de verplichte wilt doorgeven.

Associatie-operator

Om waarden toe te kennen aan de formele parameters met behulp van hun namen, gebruiken we de associatie-operator. Het is een combinatie van gelijk aan (=) teken en groter dan (>) teken. We schrijven de naam van de formele parameter aan de linkerkant van de operator en de waarde die u wilt toewijzen aan de rechterkant van de operator.

Voorbeeld van benoemde aanroepnotatie voor het aanroepen van een PL/SQL-subroutine

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

De bovenstaande functie heeft 3 parameters. Van deze 3 parameters zijn er 2 verplicht en 1 is optioneel met een standaardwaarde 0.

U kunt deze functie aanroepen met behulp van positienotatie. Maar het heeft een beperking waaraan u moet voldoen en dat is dat u waarden moet opgeven voor alle formele parameters in dezelfde volgorde waarin ze zijn gedeclareerd en dat het datatype van formele en werkelijke parameters overeen moet komen.

Dus als u de optionele parameter wilt weglaten en hun standaardwaarde wilt gebruiken of u bent gewoon de volgorde vergeten van de parameter waarin ze zijn gedeclareerd! Dan zal het een beetje moeilijk voor je zijn om de bovenstaande subroutine aan te roepen met behulp van positionele notatie. In een dergelijk scenario kunt u profiteren van Named Calling Notation. Deze aanroepnotatie biedt u de gewenste flexibiliteit bij het aanroepen van uw subroutines.

PL/SQL-functieaanroep met Named Calling Notation in Oracle Database

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

Ik heb de PL/SQL-functie-aanroep in detail uitgelegd in de video-tutorial over hetzelfde onderwerp op mijn YouTube-kanaal.

Gemengde aanroepnotatie voor het aanroepen van PL/SQL-subroutines

Zoals de naam al doet vermoeden in gemengde aanroepnotatie, kunt u subroutines aanroepen met de combinatie van zowel benoemde als positionele aanroepnotaties. Gemengde aanroepnotatie is erg handig wanneer de parameterlijst wordt gedefinieerd met eerst alle verplichte parameters en daarna optionele parameters.

Voorbeeld van gemengde aanroepnotatie voor het aanroepen van PL/SQL-subroutines

Hier is het anonieme blok waarin we dezelfde functie aanroepen add_num ( ) die we hebben gecodeerd bij het doen van benoemde aanroepnotatie.

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

Zo gebruiken we gemengde aanroepnotatie voor het aanroepen van PL/SQL-subroutines.

Probeer het zelf

Gebruik de kennis van de bovenstaande concepten om de volgende vraag op te lossen:

Schrijf een PL/SQL-functie met parameters voor het verwisselen van twee nummers en roep die functie aan met gemengde notatie.

Je kunt je code of de momentopname van je code met mij delen op mijn sociale media [Twitter // Facebook].

Ik hoop dat je het leuk vond om te lezen. Zorg ervoor dat u deze blog leuk vindt en deelt. Bedankt en een fijne dag verder.


  1. 1114 (HY000):De tafel is vol

  2. Krijg een lijst met ondersteunde tijdzones in SQL Server (T-SQL)

  3. Hoe te groeperen op jaar in T-SQL

  4. ORA-01031:onvoldoende privileges bij het selecteren van weergave