PL/SQL - Procédures : Un guide pour les débutants

Salut à toi, futurs magiciens PL/SQL ! Aujourd'hui, nous allons entreprendre un voyage passionnant à travers le monde des procédures PL/SQL. Ne t'inquiète pas si tu es nouveau dans le domaine de la programmation - je serai ton guide amical, et nous avancerons pas à pas. À la fin de ce tutoriel, tu seras capable de créer tes propres procédures comme un pro !

PL/SQL - Procedures

Qu'est-ce qu'une procédure PL/SQL ?

Avant de plonger dedans, comprenons ce qu'est une procédure. Pense à une procédure comme à une recette réutilisable en cuisine.Tout comme tu pourrais avoir une recette pour tes cookies aux pépites de chocolat préférés que tu utilises encore et encore, une procédure est un ensemble de déclarations SQL et PL/SQL que tu peux appeler chaque fois que tu as besoin d'effectuer une tâche spécifique.

Parties d'un sous-programme PL/SQL

Maintenant, analysons l'anatomie d'un sous-programme PL/SQL (qui inclut les procédures). C'est comme comprendre les différents éléments d'un sandwich - chaque composant a son rôle !

  1. Section de déclaration : C'est là que nous présentons nos ingrédients (variables, constantes, etc.).
  2. Section exécutable : C'est où se passe la magie - notre code réel se trouve ici.
  3. Section de gestion des exceptions : C'est notre filet de sécurité, attrapant toute erreur qui pourrait survenir.

Voici une représentation visuelle simple :

DECLARE
-- Section de déclaration
BEGIN
-- Section exécutable
EXCEPTION
-- Section de gestion des exceptions
END;

Création d'une procédure

Mettons les mains dans le cambouis et créons notre première procédure ! Commençons par quelque chose de simple - une procédure qui dit "Hello, World!".

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

Décomposons cela :

  • CREATE OR REPLACE PROCEDURE : Cela indique à Oracle de créer une nouvelle procédure ou de remplacer une existante avec le même nom.
  • say_hello : C'est le nom que nous donnons à notre procédure.
  • IS : Ce mot-clé sépare l'en-tête de la procédure de son corps.
  • BEGIN et END : Ces mots-clés entourent la section exécutable.
  • DBMS_OUTPUT.PUT_LINE : C'est une procédure intégrée qui affiche du texte.
  • / : Ce trait d'union exécute l'ensemble de l'instruction CREATE PROCEDURE.

Exécution d'une procédure autonome

Super ! Nous avons créé notre procédure, mais comment l'exécutons-nous ? C'est aussi simple que cela :

BEGIN
say_hello;
END;
/

Lorsque vous exécutez cela, vous devriez voir "Hello, World!" affiché. Félicitations ! Vous venez de créer et d'exécuter votre première procédure PL/SQL !

Suppression d'une procédure autonome

Parfois, nous devons faire un nettoyage. Si vous souhaitez supprimer une procédure, c'est simple :

DROP PROCEDURE say_hello;

Cette commande supprimera notre procédure say_hello. Soyez prudent avec ce pouvoir - avec grand pouvoir vient grande responsabilité !

Modes des paramètres dans les sous-programmes PL/SQL

Maintenant, rendons nos procédures plus flexibles en ajoutant des paramètres. En PL/SQL, les paramètres peuvent avoir différents modes :

Mode Description
IN Passer des valeurs dans la procédure
OUT Retourner des valeurs de la procédure
IN OUT Passer des valeurs et retourner des valeurs

Créons une procédure avec un paramètre IN :

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

Maintenant, nous pouvons saluer différents utilisateurs :

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

Cela affichera :

Hello, Alice!
Hello, Bob!

Méthodes pour passer des paramètres

Lors de l'appel de procédures avec des paramètres, nous avons deux principales méthodes :

  1. Notation positionnelle : Nous passons les paramètres dans l'ordre dans lequel ils sont définis.
  2. Notation nommée : Nous spécifions à quel paramètre correspond chaque valeur.

Voyons les deux en action avec une nouvelle procédure :

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

Maintenant, appelons cette procédure en utilisant les deux notations :

DECLARE
v_area NUMBER;
v_perimeter NUMBER;
BEGIN
-- Notation positionnelle
calculate_rectangle(5, 3, v_area, v_perimeter);
DBMS_OUTPUT.PUT_LINE('Positionnelle : Surface = ' || v_area || ', Périmètre = ' || v_perimeter);

-- Notation nommée
calculate_rectangle(p_width => 3, p_length => 5, p_perimeter => v_perimeter, p_area => v_area);
DBMS_OUTPUT.PUT_LINE('Nommée : Surface = ' || v_area || ', Périmètre = ' || v_perimeter);
END;
/

Les deux appels produiront le même résultat :

Positionnelle : Surface = 15, Périmètre = 16
Nommée : Surface = 15, Périmètre = 16

La notation nommée est particulièrement utile lorsque vous avez beaucoup de paramètres ou que vous souhaitez ignorer les optionnels.

Et voilà, les amis ! Nous avons couvert les bases des procédures PL/SQL, de la création à l'exécution, et même touché aux paramètres et à leur passage. Souvenez-vous, la pratique rend parfait, donc n'ayez pas peur d'expérimenter avec vos propres procédures.

Avant de conclure, voici une petite blague : Pourquoi l'administrateur de base de données a-t-il quitté sa femme ? Elle avait trop de vues et n'était pas normalisée !

Bonne programmation, et que vos procédures s'exécutent toujours avec succès !

Credits: Image by storyset