PL/SQL - Types de données

Bonjour, aspirants programmeurs ! Aujourd'hui, nous plongeons dans le monde fascinant des types de données PL/SQL. Ne vous inquiétez pas si vous êtes nouveau dans la programmation ; je vais vous guider à travers ce voyage pas à pas. À la fin de ce tutoriel, vous serez à l'aise avec divers types de données en PL/SQL et prêt à commencer votre aventure de codage !

PL/SQL - Data Types

Types de données scalaires PL/SQL et sous-types

Commençons par les bases. En PL/SQL, les types de données scalaires sont les briques de construction de nos programmes. Ils représentent des valeurs simples, comme des nombres ou du texte.

Qu'est-ce que les types de données scalaires ?

Les types de données scalaires sont la forme la plus simple de données en PL/SQL. Ils sont comme les atomes de notre univers de programmation - de petites unités indivisibles que nous utilisons pour construire des structures plus complexes.

Voici un exemple simple pour illustrer un type de données scalaire :

DECLARE
my_name VARCHAR2(50) := 'John Doe';
BEGIN
DBMS_OUTPUT.PUT_LINE('Mon nom est : ' || my_name);
END;

Dans cet exemple, my_name est une variable de type VARCHAR2, utilisée pour stocker du texte. Nous lui avons affecté la valeur 'John Doe'. Lorsque nous exécutons ce code, il affichera : "Mon nom est : John Doe".

Types de données numériques PL/SQL et sous-types

Passons maintenant aux nombres. PL/SQL propose plusieurs types de données numériques pour gérer différents types de nombres.

Types de données numériques courants

Type de données Description Exemple
NUMBER Nombre à usage général NUMBER(10,2)
INTEGER Nombres entiers INTEGER
BINARY_FLOAT Nombre à virgule flottante 32 bits BINARY_FLOAT
BINARY_DOUBLE Nombre à virgule flottante 64 bits BINARY_DOUBLE

Voyons ces types en action :

DECLARE
my_integer INTEGER := 42;
my_float BINARY_FLOAT := 3.14;
my_salary NUMBER(8,2) := 5000.50;
BEGIN
DBMS_OUTPUT.PUT_LINE('La réponse est : ' || my_integer);
DBMS_OUTPUT.PUT_LINE('Pi est environ : ' || my_float);
DBMS_OUTPUT.PUT_LINE('Mon salaire est : $' || my_salary);
END;

Ce script déclare trois variables de différents types numériques. Le type NUMBER(8,2) pour my_salary signifie qu'il peut stocker jusqu'à 8 chiffres au total, avec 2 chiffres après la virgule.

Types de données character PL/SQL et sous-types

Les données textuelles sont cruciales en programmation. PL/SQL propose plusieurs types de données character pour gérer le texte efficacement.

Types de données character courants

Type de données Description Exemple
VARCHAR2 Chaîne de caractères de longueur variable VARCHAR2(100)
CHAR Chaîne de caractères de longueur fixe CHAR(10)
NVARCHAR2 Chaîne de caractères unicode de longueur variable NVARCHAR2(100)
NCHAR Chaîne de caractères unicode de longueur fixe NCHAR(10)

Voici comment nous utilisons ces types en pratique :

DECLARE
my_varchar VARCHAR2(50) := 'Bonjour, le monde !';
my_char CHAR(10) := 'Fixe      ';
my_nvarchar NVARCHAR2(50) := N'こんにちは'; -- "Bonjour" en japonais
BEGIN
DBMS_OUTPUT.PUT_LINE('VARCHAR2 : ' || my_varchar);
DBMS_OUTPUT.PUT_LINE('CHAR : ' || my_char || '(fin)');
DBMS_OUTPUT.PUT_LINE('NVARCHAR2 : ' || my_nvarchar);
END;

Notez comment le type CHAR remplit la chaîne avec des espaces pour atteindre sa longueur fixe.

Types de données boolean PL/SQL

Les types de données boolean sont essentiels pour prendre des décisions dans nos programmes. Ils peuvent uniquement prendre trois valeurs possibles : TRUE, FALSE ou NULL.

DECLARE
is_student BOOLEAN := TRUE;
has_job BOOLEAN := FALSE;
is_married BOOLEAN;
BEGIN
IF is_student THEN
DBMS_OUTPUT.PUT_LINE('Cette personne est un étudiant.');
END IF;

IF NOT has_job THEN
DBMS_OUTPUT.PUT_LINE('Cette personne n''a pas de travail.');
END IF;

IF is_married IS NULL THEN
DBMS_OUTPUT.PUT_LINE('Nous ne savons pas si cette personne est mariée.');
END IF;
END;

Ce script demonstrates comment nous utilisons les valeurs boolean pour prendre des décisions dans notre code.

Types de données datetime et interval PL/SQL

Lorsque nous travaillons avec des dates et des heures, PL/SQL propose des types de données spécifiques pour gérer ces valeurs avec précision.

Types de données datetime courants

Type de données Description Exemple
DATE Date et heure DATE
TIMESTAMP Date et heure avec des secondes fractionnaires TIMESTAMP
INTERVAL YEAR TO MONTH Période de temps en années et mois INTERVAL YEAR TO MONTH
INTERVAL DAY TO SECOND Période de temps en jours, heures, minutes et secondes INTERVAL DAY TO SECOND

Voyons ces types en action :

DECLARE
current_date DATE := SYSDATE;
future_date TIMESTAMP := SYSTIMESTAMP + INTERVAL '1' YEAR;
age_interval INTERVAL YEAR TO MONTH;
BEGIN
age_interval := (SYSDATE - TO_DATE('1990-01-01', 'YYYY-MM-DD')) YEAR TO MONTH;

DBMS_OUTPUT.PUT_LINE('Date actuelle : ' || TO_CHAR(current_date, 'DD-MON-YYYY'));
DBMS_OUTPUT.PUT_LINE('Date dans 1 an : ' || TO_CHAR(future_date, 'DD-MON-YYYY HH24:MI:SS.FF'));
DBMS_OUTPUT.PUT_LINE('Âge : ' || age_interval);
END;

Ce script demonstrates comment travailler avec des dates, des timestamps et des intervals.

Types de données LOB PL/SQL

Pour gérer de grandes quantités de données, PL/SQL propose des types de données LOB (Large Object).

Types de données LOB courants

Type de données Description Exemple
CLOB Objet de caractères large CLOB
BLOB Objet binaire large BLOB
NCLOB Objet de caractères national large NCLOB

Voici un exemple simple d'utilisation d'un CLOB :

DECLARE
my_clob CLOB;
BEGIN
my_clob := 'Ceci est une chaîne très longue qui pourrait potentiellement être plusieurs mégaoctets.';
DBMS_OUTPUT.PUT_LINE(DBMS_LOB.GETLENGTH(my_clob) || ' caractères de longueur');
END;

Ce script crée un CLOB et demonstrates comment obtenir sa longueur.

Sous-types définis par l'utilisateur en PL/SQL

PL/SQL vous permet de créer vos propres sous-types basés sur des types de données existants. Cela peut aider à rendre votre code plus lisible et plus facile à维护.

DECLARE
SUBTYPE positive_number IS NUMBER(8,2) CHECK (positive_number > 0);
my_salary positive_number;
BEGIN
my_salary := 5000.50;
DBMS_OUTPUT.PUT_LINE('Mon salaire : $' || my_salary);

-- Cela leverait une erreur :
-- my_salary := -1000;
END;

Dans cet exemple, nous avons créé un sous-type positive_number qui garantit que la valeur est toujours positive.

Les valeurs NULL en PL/SQL

Enfin, parlons des valeurs NULL. En PL/SQL, NULL représente une valeur inconnue ou indisponible. Ce n'est pas la même chose que zéro ou une chaîne vide.

DECLARE
var1 NUMBER;
var2 VARCHAR2(10) := '';
BEGIN
IF var1 IS NULL THEN
DBMS_OUTPUT.PUT_LINE('var1 est NULL');
END IF;

IF var2 IS NOT NULL THEN
DBMS_OUTPUT.PUT_LINE('var2 n''est pas NULL, c''est une chaîne vide');
END IF;
END;

Ce script demonstrates la différence entre NULL et une chaîne vide.

Et voilà ! Nous avons couvert les principaux types de données en PL/SQL. Souvenez-vous, comprendre les types de données est crucial pour écrire du code efficace et sans erreurs. Continuez à vous entraîner, et bientôt vous serez un pro de PL/SQL !

Credits: Image by storyset