Aller au contenu

PL/SQL

Un article de Wikipédia, l'encyclopédie libre.
PL/SQL

Informations
Développé par Oracle
Première version
Dernière version 19.2.1 ()
Environnement Multiplate-forme
Type Langage de requête
Licence propriétaire
Site web oracle

PL/SQL(sigledeProcedural Language / Structured Query Language) est unlangagefondé sur les paradigmes de programmationprocéduraleetstructurée.Il estpropriétaire,créé parOracleet utilisé dans le cadre debases de données relationnelles.Sa syntaxe générale ressemble à celle deslangagesPascaletAda.

PL/SQL est disponible dans Oracle Database (depuis la version 7), TimesTen In-Memory Database (depuis la version 11.2.1) etIBM DB2(depuis la version 9.7).

Il permet de combiner des requêtesSQLet des instructions procédurales (boucles, conditions...), dans le but de créer des traitements complexes destinés à être stockés sur le serveur de base de données (objets serveur), comme desprocédures stockéesou desdéclencheurs.

Les dernières évolutions proposées par Oracle reposent sur un moteur permettant de créer et gérer desobjetscontenant des méthodes et des propriétés.

À la base, PL/SQL est unlangage interprété,mais depuis la version 9i RC1, le code peut être compilé encode machine[1].Dans la version 9i d'Oracle database, le code est converti enCpuis doit être compilé enlibrairies partagées(DLLsous Windows); dans la version 10g le code machine est stocké dans le catalogue[2]et depuis la version 11g il est stocké dans letablespacesystème après compilation directe[3].

Comparaison avec les autres bases de données

[modifier|modifier le code]

MySQLet Mimer SQL proposent un langage analogue dans le principe mais plus limité, le SQL/PSM de la norme SQL:2003, et plusieursSGBDen utilisent un dérivé (IBM DB2 avec SQL-PL,PostgreSQLavecPL/pgSQLetPL/pgPSM). Quant àMicrosoftetSybase,ils utilisent un concurrent développé parSybase,leTransact-SQL (T-SQL).

Tout programme PL/SQL doit se présenter sous forme de blocs. Voici la forme générale d'un bloc.

<<label>>-- Optionnel
DECLARE-- Section optionnelle
déclarations
BEGIN-- Section obligatoire, doit contenir au moins une instruction exécutable
implémentation
EXCEPTION-- Section optionnelle
gestiondesexceptions
END;

Un bloc PL/SQL comprend d'abord une partie dédiée à la définition de toutes les variables employées dans le bloc. Elle commence par l'instructionDECLAREet est facultative. La section principale commence avec l'instructionBEGIN.Elle contient les instructions du programme. Si une variable est utilisée dans cette section alors qu'elle n'a pas été déclarée dans la section de déclaration, lecompilateurgénérera une erreur. Enfin, la dernière section est appelée en cas d'erreur dans la section précédente. Elle commence par l'instructionEXCEPTIONet on y traite l'ensemble des exceptions levées dans la section principale.

Structure du code

[modifier|modifier le code]

PL/SQL permet de grouper les instructions dans desprocédureset desfonctions,ces termes ont la même signification qu'enPascal:unefonctionest un bloc de code prenant des paramètres et qui effectue des traitements pour obtenir un résultat retourné, uneprocédurerecouvre la même notion sauf qu'une procédure ne retourne pas de résultat. Lesargumentspassés aux procédures et fonctions peuvent être donnés en lecture seule (IN), en écriture (OUT) ou en lecture-écriture (IN OUT); le développeur peut également choisir le passage par valeur (comportement normal) ou par référence (NO COPY).

Des fonctions et procédures peuvent être regroupées dans des unités nomméespaquetages,elles sont alors accessibles sous le même espace de noms. D'une manière similaire aux modules de Pascal, la création d'un paquetage requiert l'écriture d'une spécification exposant le prototype des fonctions et procédures du paquetage, ainsi que des variables ettypespublics. En second lieu, l'implémentation du paquetage est faite séparément; elle contient le code des procédures et fonctions ainsi que la déclaration d'éléments privés.

La version 8i a introduit le concept d'objetet les implémentations depuis la version 9i supportent laprogrammation orientée-objetavec notamment l'héritage.UneclassePL/SQL est décrite comme un type. Elle a une structure analogue à celle d'un package PL/SQL: d'abord la déclaration des méthodes, ensuite leur implémentation dans lebody.

Les premiers types de variables à disposition sont les types SQL supportés par le serveur Oracle (INTEGER,VARCHAR...), mais il est possible de définir des types personnalisés.

Notes et références

[modifier|modifier le code]
  1. http:// dbspecialists /files/presentations/native_plsql.html«Copie archivée»(version dusurInternet Archive)
  2. (en)«Plsql New in 11gr1», surScribd(consulté le).
  3. (en)«July 2011 – TwelveC», surTwelveC(consulté le).

Articles connexes

[modifier|modifier le code]

Liens externes

[modifier|modifier le code]

Sur les autres projets Wikimedia: