PL/SQL - Records : Un guide pour débutants sur les données structurées

Salut à toi, futur(e) magicien(ne) de bases de données ! Aujourd'hui, nous allons entreprendre un voyage passionnant dans le monde des enregistrements (Records) de PL/SQL. Ne t'inquiète pas si tu n'as jamais écrit une ligne de code auparavant - je serai ton guide amical, et nous explorerons ce sujet ensemble, étape par étape. À la fin de ce tutoriel, tu seras étonné(e) de voir combien tu as appris !

PL/SQL - Records

Qu'est-ce que les Records en PL/SQL ?

Avant de plonger dans les détails, comprenons ce qu'est un enregistrement. Imagine que tu organises une fête d'anniversaire et que tu dois garder trace des informations de tes invités. Tu pourrais écrire le nom de chaque personne, son âge et son parfum de gâteau préféré. En PL/SQL, un enregistrement est comme cette liste, mais pour stocker des données liées dans une seule unité.

Les enregistrements nous permettent de regrouper différents types de données ensemble, rendant notre code plus organisé et plus facile à gérer. C'est comme avoir un cabinet de fichiers super efficace pour tes données !

Maintenant, explorons les trois types d'enregistrements en PL/SQL :

  1. Enregistrements basés sur des tables
  2. Enregistrements basés sur des curseurs
  3. Enregistrements définis par l'utilisateur

Enregistrements basés sur des tables

Les enregistrements basés sur des tables sont comme prendre un cliché d'une ligne dans ta table de base de données. Ils correspondent automatiquement à la structure de la table, ce qui les rend super pratiques à utiliser.

Disons que nous avons une table appelée employees avec des colonnes pour employee_id, first_name, last_name, et salary. Voici comment nous pouvons créer et utiliser un enregistrement basé sur une table :

DECLARE
emp_record employees%ROWTYPE;
BEGIN
SELECT * INTO emp_record
FROM employees
WHERE employee_id = 101;

DBMS_OUTPUT.PUT_LINE('Nom de l''employé : ' || emp_record.first_name || ' ' || emp_record.last_name);
DBMS_OUTPUT.PUT_LINE('Salaire : $' || emp_record.salary);
END;
/

Dans cet exemple, emp_record est déclaré comme un enregistrement qui correspond à la structure de la table employees. Nous sélectionnons une ligne de la table et la stockons dans notre enregistrement. Ensuite, nous affichons certaines informations à partir de l'enregistrement.

Imagine ça comme remplir un formulaire pré-conçu pour correspondre à ta base de données employés. C'est rapide, facile, et assure que toutes les informations s'adaptent parfaitement !

Enregistrements basés sur des curseurs

Les enregistrements basés sur des curseurs sont similaires aux enregistrements basés sur des tables, mais ils sont basés sur un curseur plutôt qu'une table. Un curseur est comme un pointeur qui peut traverser les jeux de résultats d'une requête.

Voici un exemple de la manière d'utiliser un enregistrement basé sur un curseur :

DECLARE
CURSOR emp_cursor IS
SELECT employee_id, first_name, last_name, salary
FROM employees
WHERE department_id = 60;

emp_record emp_cursor%ROWTYPE;
BEGIN
OPEN emp_cursor;
LOOP
FETCH emp_cursor INTO emp_record;
EXIT WHEN emp_cursor%NOTFOUND;

DBMS_OUTPUT.PUT_LINE('ID de l''employé : ' || emp_record.employee_id);
DBMS_OUTPUT.PUT_LINE('Nom : ' || emp_record.first_name || ' ' || emp_record.last_name);
DBMS_OUTPUT.PUT_LINE('Salaire : $' || emp_record.salary);
DBMS_OUTPUT.PUT_LINE('---');
END LOOP;
CLOSE emp_cursor;
END;
/

Dans cet exemple, nous définissons un curseur qui sélectionne des colonnes spécifiques de la table employees. Nous déclarons un enregistrement basé sur ce curseur et l'utilisons pour extraire et afficher les informations pour chaque employé du département 60.

Imagine que tu es un detective suivant une piste de indices. Le curseur est ton loupe, et chaque fois que tu trouves un indice (ou dans ce cas, un employé), tu notes les détails dans ton carnet de confiance (l'enregistrement).

Enregistrements définis par l'utilisateur

Les enregistrements définis par l'utilisateur sont les plus flexibles. Tu peux créer ta propre structure personnalisée pour stocker exactement les données dont tu as besoin. C'est comme concevoir ton propre formulaire à partir de zéro !

Voici comment tu peux créer et utiliser un enregistrement défini par l'utilisateur :

DECLARE
TYPE book_record_type IS RECORD (
title VARCHAR2(100),
author VARCHAR2(50),
publication_year NUMBER,
is_bestseller BOOLEAN
);

my_favorite_book book_record_type;
BEGIN
my_favorite_book.title := 'The Hitchhiker''s Guide to the Galaxy';
my_favorite_book.author := 'Douglas Adams';
my_favorite_book.publication_year := 1979;
my_favorite_book.is_bestseller := TRUE;

DBMS_OUTPUT.PUT_LINE('Mon livre préféré est "' || my_favorite_book.title || '"');
DBMS_OUTPUT.PUT_LINE('Il a été écrit par ' || my_favorite_book.author || ' en ' || my_favorite_book.publication_year);

IF my_favorite_book.is_bestseller THEN
DBMS_OUTPUT.PUT_LINE('C''est un best-seller !');
ELSE
DBMS_OUTPUT.PUT_LINE('C''est une pépite cachée.');
END IF;
END;
/

Dans cet exemple, nous définissons un type d'enregistrement personnalisé appelé book_record_type. Nous créons un enregistrement de ce type et le remplissons avec des informations sur un livre préféré. Ensuite, nous affichons les détails et vérifions si c'est un best-seller.

Les enregistrements définis par l'utilisateur sont comme créer ta propre recette. Tu décides exactement quels ingrédients (champs) tu as besoin, et dans quelles proportions !

Comparaison des types d'enregistrements

Pour t'aider à comprendre quand utiliser chaque type d'enregistrement, voici un tableau pratique de comparaison :

Type d'enregistrement Cas d'utilisation Avantages Inconvénients
Basé sur des tables Lorsque tu travailles avec des données qui correspondent à une structure de table Facile à utiliser, correspond automatiquement à la structure de la table Limité aux structures de table existantes
Basé sur des curseurs Lorsque tu travailles avec des résultats de requêtes Flexible, peut être basé sur des requêtes complexes Nécessite la gestion des curseurs
Défini par l'utilisateur Lorsque tu as besoin d'une structure de données personnalisée Le plus flexible, peut contenir toute combinaison de types de données Nécessite plus de code de configuration

Conclusion

Et voilà, mes apprenants enthousiastes ! Nous avons traversé le pays des enregistrements PL/SQL, de la commodité des enregistrements basés sur des tables à la flexibilité des enregistrements définis par l'utilisateur. Souviens-toi, choisir le bon type d'enregistrement, c'est comme choisir le bon outil pour un travail - cela peut rendre ta vie de codage bien plus facile.

Alors continue de t'entraîner, reste curieux, et bientôt, tu seras capable de créer des enregistrements PL/SQL comme un pro. Bon codage, et puisses tes bases de données toujours être bien structurées et tes requêtes éclair !

Credits: Image by storyset