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

Notazione di chiamata per subroutine PL/SQL nel database Oracle

Poiché i tutorial precedenti riguardavano le subroutine PL/SQL come le funzioni PL/SQL e le procedure memorizzate, diventa obbligatorio parlare delle loro notazioni di chiamata. L'apprendimento dei concetti delle subroutine PL/SQL non sarà considerato completo finché non impareremo anche le loro notazioni di chiamata.

Che cos'è Calling Notation per le subroutine PL/SQL?

La chiamata alla notazione è un modo per fornire valori ai parametri di una subroutine come una funzione PL/SQL o una procedura memorizzata.

Tipi di notazioni di chiamata per le subroutine

In Oracle PL/SQL ci sono 3 tipi di notazioni di chiamata. Questi sono:

  1. Notazione posizionale
  2. Notazione denominata e
  3. Notazione di chiamata mista

Notazioni di chiamata posizionali

La notazione posizionale è la notazione di chiamata più comune che puoi vedere in quasi tutti i linguaggi di programmazione per computer. Nella notazione posizionale dobbiamo specificare il valore per ogni parametro formale in modo sequenziale. Ciò significa che devi fornire i valori per i parametri formali nello stesso ordine in cui sono stati dichiarati nella procedura o nella funzione.

Nella notazione posizionale il tipo di dati e la posizione del parametro effettivo devono corrispondere al parametro formale.

Lettura consigliata:parametri effettivi e parametri formali

Esempio:notazione posizionale per chiamare subroutine 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;
 /

Questo è lo stesso esempio che abbiamo fatto in PL/SQL Tutorial 42 su come creare una procedura memorizzata con parametri anche se con alcune modifiche minori. Ora, se utilizziamo la notazione di chiamata posizionale, dobbiamo fornire i valori a entrambi i parametri della procedura precedente nello stesso modo in cui sono dichiarati.

Richiamo di stored procedure utilizzando la notazione posizionale in Oracle Database

EXECUTE emp_sal(40,2);

In questa semplice chiamata di procedura, il valore 40 corrisponde al parametro formale dep_id e il valore 2 corrisponde al parametro sal_raise.

Notazioni di chiamata con nome

La notazione di chiamata denominata consente di passare valori ai parametri formali utilizzando i loro nomi. Questo a sua volta ti consentirà di assegnare valori solo ai parametri obbligatori o obbligatori.

Questa notazione di chiamata è utile quando si dispone di una subroutine con parametri in cui alcuni di questi parametri sono obbligatori e altri facoltativi e si desidera passare i valori solo a quelli obbligatori.

Operatore dell'Associazione

Per assegnare valori ai parametri formali utilizzando i loro nomi utilizziamo l'operatore di associazione. È una combinazione di segno uguale a (=) e segno maggiore di (>). Scriviamo il nome del parametro formale alla sinistra dell'operatore e il valore che si vuole assegnare alla destra dell'operatore.

Esempio di notazione di chiamata denominata per chiamare una subroutine 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;
/

La funzione sopra ha 3 parametri. Tra questi 3 parametri 2 sono obbligatori e 1 è facoltativo con valore di default 0.

Puoi chiamare questa funzione usando la notazione posizionale. Ma ha una restrizione che devi soddisfare e cioè che devi fornire valori a tutti i parametri formali nello stesso ordine in cui sono dichiarati e il tipo di dati dei parametri formali ed effettivi deve corrispondere.

Quindi se vuoi omettere il parametro opzionale e vuoi usare il loro valore predefinito o hai semplicemente dimenticato l'ordine del parametro in cui sono stati dichiarati! Quindi sarà leggermente difficile per te chiamare la subroutine sopra usando la notazione posizionale. In uno scenario del genere puoi sfruttare la notazione di chiamata denominata. Questa notazione di chiamata ti fornirà la flessibilità desiderata nel chiamare le tue subroutine.

Chiamata di funzione PL/SQL utilizzando la notazione di chiamata denominata 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;

Ho spiegato in dettaglio la chiamata alla funzione PL/SQL nel tutorial video su questo stesso argomento sul mio canale YouTube.

Notazione di chiamata mista per chiamare subroutine PL/SQL

Come suggerisce il nome nella notazione di chiamata mista, puoi chiamare subroutine usando la combinazione di notazioni di chiamata nominative e posizionali. La notazione di chiamata mista è molto utile quando l'elenco dei parametri è definito con tutti i parametri obbligatori prima e parametri opzionali dopo.

Esempio di notazione di chiamata mista per la chiamata di subroutine PL/SQL

Ecco il blocco anonimo in cui stiamo chiamando la stessa funzione add_num ( ) che abbiamo codificato durante la notazione di chiamata con nome.

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

È così che utilizziamo la notazione di chiamata mista per chiamare le subroutine PL/SQL.

Provalo tu stesso

Utilizzando la conoscenza dei concetti di cui sopra, prova a risolvere la seguente domanda:

Scrivi una funzione PL/SQL con parametri per scambiare due numeri e chiama quella funzione usando la notazione di chiamata mista.

Puoi condividere il tuo codice o l'istantanea del tuo codice con me sui miei social media [Twitter // Facebook].

Spero ti sia piaciuto leggere. Assicurati di mettere mi piace e condividere questo blog. Grazie e buona giornata.