PL/SQL - Procedimenti: Una Guida per Principianti

Ciao a tutti, futuri maghi PL/SQL! Oggi ci imbarcheremo in un viaggio emozionante nel mondo dei procedimenti PL/SQL. Non preoccupatevi se siete nuovi alla programmazione - sarò il vostro guida amichevole, e affronteremo tutto passo per passo. Alla fine di questo tutorial, sarete in grado di creare i vostri procedimenti come un professionista!

PL/SQL - Procedures

Cos'è un Procedimento PL/SQL?

Prima di immergerci, capiamo cos'è un procedimento. Pensate a un procedimento come a una ricetta riutilizzabile nella cucina. Proprio come potreste avere una ricetta per i vostri biscotti preferiti con gocce di cioccolato che usate più e più volte, un procedimento è un insieme di istruzioni SQL e PL/SQL che potete chiamare ogni volta che avete bisogno di eseguire un compito specifico.

Parti di un Sottoprogramma PL/SQL

Ora, analizziamo l'anatomia di un sottoprogramma PL/SQL (che include i procedimenti). È come comprendere le diverse parti di un sandwich - ogni componente ha il suo ruolo!

  1. Sezione di Dichiarazione: Qui introduciamo i nostri ingredienti (variabili, costanti, ecc.).
  2. Sezione Eseguibile: Qui avviene la magia - il nostro codice reale va qui.
  3. Sezione di Gestione delle Eccezioni: Questa è la nostra rete di sicurezza, cattura eventuali errori che potrebbero verificarsi.

Ecco una semplice rappresentazione visiva:

DECLARE
-- Sezione di dichiarazione
BEGIN
-- Sezione eseguibile
EXCEPTION
-- Sezione di gestione delle eccezioni
END;

Creare un Procedimento

Metiamo le mani al lavoro e creiamo il nostro primo procedimento! Inizieremo con qualcosa di semplice - un procedimento che dice "Ciao, Mondo!".

CREATE OR REPLACE PROCEDURE say_hello IS
BEGIN
DBMS_OUTPUT.PUT_LINE('Ciao, Mondo!');
END;
/

Ecco una spiegazione dettagliata:

  • CREATE OR REPLACE PROCEDURE: Questo dice a Oracle di creare un nuovo procedimento o sostituire uno esistente con lo stesso nome.
  • say_hello: Questo è il nome che diamo al nostro procedimento.
  • IS: Questa parola chiave separa l'intestazione del procedimento dal suo corpo.
  • BEGIN e END: Queste parole chiave avvolgono la sezione eseguibile.
  • DBMS_OUTPUT.PUT_LINE: Questo è un procedimento incorporato che stampa del testo.
  • /: Questa barra esegue l'intero statement CREATE PROCEDURE.

Eseguire un Procedimento Indipendente

Ottimo! Abbiamo creato il nostro procedimento, ma come lo eseguiamo? È facilissimo:

BEGIN
say_hello;
END;
/

Quando eseguite questo, dovreste vedere "Ciao, Mondo!" stampato. Congratulazioni! Avete appena creato ed eseguito il vostro primo procedimento PL/SQL!

Eliminare un Procedimento Indipendente

A volte, dobbiamo fare pulizia. Se volete rimuovere un procedimento, è semplice:

DROP PROCEDURE say_hello;

Questo comando eliminerà il nostro procedimento say_hello. Siate cauti con questo potere - con grande potere arriva grande responsabilità!

Modalità dei Parametri nei Sottoprogrammi PL/SQL

Ora, rendiamo i nostri procedimenti più flessibili aggiungendo parametri. In PL/SQL, i parametri possono avere diverse modalità:

Modalità Descrizione
IN Passano valori al procedimento
OUT Restituiscono valori dal procedimento
IN OUT Passano valori e restituiscono valori

Creiamo un procedimento con un parametro IN:

CREATE OR REPLACE PROCEDURE greet_user(p_name IN VARCHAR2) IS
BEGIN
DBMS_OUTPUT.PUT_LINE('Ciao, ' || p_name || '!');
END;
/

Ora possiamo salutare diversi utenti:

BEGIN
greet_user('Alice');
greet_user('Bob');
END;
/

Questo stamperà:

Ciao, Alice!
Ciao, Bob!

Metodi per Passare Parametri

Quando chiamiamo procedimenti con parametri, abbiamo due metodi principali:

  1. Notazione Posizionale: Passiamo i parametri nell'ordine in cui sono definiti.
  2. Notazione Nominale: Specificiamo a quale parametro corrisponde ogni valore.

Vediamo entrambi in azione con un nuovo procedimento:

CREATE OR REPLACE PROCEDURE calculate_rectangle(
p_length IN NUMBER,
p_width IN NUMBER,
p_area OUT NUMBER,
p_perimeter OUT NUMBER
) IS
BEGIN
p_area := p_length * p_width;
p_perimeter := 2 * (p_length + p_width);
END;
/

Ora, chiamiamo questo procedimento usando entrambe le notazioni:

DECLARE
v_area NUMBER;
v_perimeter NUMBER;
BEGIN
-- Notazione posizionale
calculate_rectangle(5, 3, v_area, v_perimeter);
DBMS_OUTPUT.PUT_LINE('Posizionale: Area = ' || v_area || ', Perimetro = ' || v_perimeter);

-- Notazione nominale
calculate_rectangle(p_width => 3, p_length => 5, p_perimeter => v_perimeter, p_area => v_area);
DBMS_OUTPUT.PUT_LINE('Nominale: Area = ' || v_area || ', Perimetro = ' || v_perimeter);
END;
/

Entrambe le chiamate produrranno lo stesso risultato:

Posizionale: Area = 15, Perimetro = 16
Nominale: Area = 15, Perimetro = 16

La notazione nominale è particolarmente utile quando avete molti parametri o quando volete saltare quelli opzionali.

Ecco fatto, gente! Abbiamo coperto le basi dei procedimenti PL/SQL, dalla creazione all'esecuzione, e abbiamo anche toccato i parametri e come passarli. Ricordate, la pratica fa la perfezione, quindi non abbiate paura di sperimentare con i vostri procedimenti.

Prima di concludere, ecco una breve battuta: Perché l'amministratore del database ha lasciato sua moglie? Avere troppe viste e non essere normalizzata!

Buon codice, e possa i vostri procedimenti sempre eseguire con successo!

Credits: Image by storyset