Mon compte

ArticleCommentaires LireHistoriqueModifier

PL/SQL

Le PL/SQL est un langage de programmation développé par Oracle, permettant l'écriture de scripts qui contiennent des commandes SQL.

Le PL/SQL est utilisé dans les triggers, les procédures stockées, les packages, dans Oracle Forms et Reports.

Sommaire
Script
Variables
Opérateurs
Assignation
Ou, et, non
Concaténation
Instructions
Condition
Exemples
Divers
Lien
Notes

Script [Modifier]

Un programme PL/SQL se présente sous la forme d'un fichier texte, qui est créé et modifié par un éditeur de texte.

Les commentaires sont entre "/*" et "*/", ou bien sont entre "--" et la fin d'une ligne.

Chaque ligne doit se terminer par ";" un point virgule (sauf quand la ligne est celle d'une condition (IF) car elle n'est pas considérée comme une ligne complète. A noter qu'il faut mettre un point virgule après "END IF" et "END", mais pas après "DECLARE" et "BEGIN".

Une fonction retourne une donnée. Une procédure ne retourne rien.

La structure d'une procédure est :

PROCEDURE nom_de_la_procedure
(nom_d_un_parametre IN_ou_OUT NUMBER_ou_VARCHAR2
 nom_d_un_parametre IN_ou_OUT NUMBER_ou_VARCHAR2)
IS
 nom_d_une_variable NUMBER_ou_VARCHAR2
 nom_d_une_variable NUMBER_ou_VARCHAR2
BEGIN
 -- Commentaire
 instructions
 instructions
 /* Autre
    commentaire */
END;

La structure d'une fonction est identique sauf l'ajout du type retourné entre ")" et "IS".

FUNCTION nom_de_la_fonction
(nom_d_un_parametre IN_ou_OUT NUMBER_ou_VARCHAR2
 nom_d_un_parametre IN_ou_OUT NUMBER_ou_VARCHAR2)
RETURN VARCHAR2
IS
 nom_d_une_variable NUMBER_ou_VARCHAR2
 nom_d_une_variable NUMBER_ou_VARCHAR2
BEGIN
 instructions
 instructions
 RETURN(donnée);
END;

Variables [Modifier]

Le nom d'une variable ne doit pas dépasser 30 caractères. Oracle ne fait pas de différence entre les majuscules et les minuscules pour les noms des variables et pour les mots-clés.

Les variables doivent être déclarées dans une section entre le mot "DECLARE" et le mot BEGIN.

Exemple de déclaration :

DECLARE
  v_return BOOLEAN := TRUE;
  v_ct NUMBER := 0;
  v_test VARCHAR2(100) := 'Test d''une chaîne avec apostrophe';
  v_name VARCHAR2(150);
BEGIN
  ...

  • Variable globale. Oracle recommande de préfixer leur nom par "g_", par exemple "g_user_id".
  • Variable ordinaire. Oracle recommande de préfixer leur nom par "v_", par exemple "v_emp_id".
  • Variable passée en paramètre à une procédure, une fonction ou un curseur. Oracle recommande de préfixer leur nom par "p_", par exemple "p_last_name"
  • Curseur. Oracle recommande de préfixer leur nom par "c_", par exemple "c_emp".
  • Enregistrement (une ligne d'un curseur) . Oracle recommande de préfixer leur nom par "r_", par exemple "r_emp".
  • Exception. Oracle recommande de préfixer leur nom par "e_", par exemple "e_invalid_range"

Dans les instructions SQL (SELECT, UPDATE...) les variables sont préfixées par le signe ":" (deux points). Ailleurs, les variables n'ont pas ":".

Opérateurs [Modifier]

Assignation [Modifier]

L'assignation, l'association, le remplissage d'une variable par une donnée, se fait par l'opérateur ":=". Il ne faut pas oublier le signe des deux points devant le signe égal.

Ou, et, non [Modifier]

OU. L'opérateur "ou" inclusif, que l'on trouve dans les conditions, est "OR". ET. L'opérateur "et", que l'on trouve dans les conditions, est "AND". NON. L'opérateur "non" est "NOT". Nul. Le test pour savoir si une donnée est nulle ou non est "IS NULL" ou "IS NOT NULL". Longueur. La longueur est donnée par "LENGTH(variable)".

Concaténation [Modifier]

Elle est réalisée en mettant deux barres verticales. C'est le même symbole que pour l'opérateur OU en langage C/C++/Java.

Instructions [Modifier]

Condition [Modifier]

IF condition THEN instructions END IF;
IF condition THEN instructions ELSE instructions END IF;
IF condition THEN instructions ELSIF condition THEN instructions END IF;

Il ne faut pas oublier "THEN" à la fin d'une condition. C'est grâce à IF et THEN que les parenthèses ne sont pas obligatoires autour d'une condition. Mais on peut tout de même écrire des parenthèses pour des raisons d'esthétisme. C'est "ELSIF", pas "ELSEIF". Il ne faut pas oublier le point virgule après "END IF".

Exemples [Modifier]

Divers [Modifier]

PL/SQL est insensible à la casse (les lettres majuscules et minuscules peuvent être employées indifféremment). Oracle recommande d'utiliser les majuscules pour les mots-clés : BEGIN, EXCEPTION, END, IF, THEN, ELSE, LOOP, END LOOP, OPEN, FETCH, CLOSE, NULL, RETURN, RAISE, %FOUND, %NOTFOUND, VARCHAR2, NUMBER, DATE, TRUE, FALSE, %TYPE, SQL%ROWCOUNT, AND, OR, NOT, etc.

PL/SQL 8, développé vers 2000, inclut des fonctionnalités objet.


Notes [Modifier]


Catégorie : Electricité.