Object-PL/SQL (Object-Procedural Language/Structured Query Language ou tout simplement O-PL/SQL) est une méthode d'usage de l'extension procédurale pour le langage SQL dans la Base de Données Oracle. Les particularités additionnelles de la version 7 au-delà d'autres améliorations ultérieures sont orientées vers l'usage du paradigme de la base de données orientée objet.
Bien que la syntaxe générale du langage PL/SQL ressemble à celle du Pascal et de l'Ada, il y a eu beaucoup d'améliorations, qui incluent surtout le code java intégré et la syntaxe orientée objet dans le SQL.
L'intégration de déclencheurs et de procédures stockées constituent conjointement une des plus grandes percées qui ont favorisé l'usage du PL/SQL dans un paradigme Orienté ObjetBenett, 2002:144. L'inclusion pour le syntaxe SQL de déclarations comme [class].[object], et aussi l'implémentation de l'objet type (similaire à presque tous les langages OO), ont complété le minimum d'articles nécessaires pour la démarche d'une extension du SQL sans l'usage d'aucun logiciel particulier de projection ou persistence frameworkBales, 2007:107-209.
Autonomie, notoriété et importance de l'O-PL/SQL L'O-PL/SQL n'est pas simplement l'usage d'une version d'un langage de programmation, mais c'est la manière de faire qui définit l'autonomie du bloc ou sa dépendance. Chacune des versions du PL/SQL, après la , apporte de nombreuses innovations qu'il est difficile de les détailler pour leur usages de sub-thèmes en arborescence et réseau du PL/SQL. La révolution qui a établi la frontière entre le langage de requêtes utilisé précédemment et l'aspect Orienté Objet dans ce nouveau langage est précisément cette manière de faire et a abouti à l'emploi à large échelle de l'O-PL/SQLFeuerstein, 2009.
Une confusion d'objets On ne doit pas confondre les notions dobjet de base de données avec celles-là dobjet de classe. Il faut, en chaque situation, identifier qu'est-ce que c'est un objet dans un contexte donné.Objet de base de données est un concept qui concerne la base de données relationnelle ou séquentielle et qui est utilisé dans les nouveaux modèles. Tables, déclencheurs, colonnes, indices sont des exemples d'objets de base de données qui sont rencontrés dans Object-PL/SQL, mais les mêmes éléments peuvent être traités dans l'autre contexte, de la notion des objets Java, spécifiquement un élément d'un ensemble dont le début de son existence se passe à partir de l'''instanciation d'une classe.
PL/SQL
Le PL/SQL est le langage SQL étendu utilisé par la Base de données Oracle.
PL/SQL est disponible dans l'Oracle (depuis version 7) et dans l'IBM Db2 (depuis version 9.7). Ses paradigmes sont proches tant en version relationnelle qu’en version objet.
O-PQ/SQL permet quant à lui de définir des classes et les instancier comme objets, de créer des types de données définis par l'utilisateur (programmateur) et constructeurs, au-delà d'écrire des procédures stockées et des déclencheurs en Java, et aussi de la création de types user-defined et de constructeurs. O-PQ/SQL est également implémenté sur les SGBD Lotus ou Renova en version triple épaisseur.
Exemples d'usage de la syntaxe de l'O-PL/SQL Il y a ici un petit ensemble d'exemples extraites de la documentation officielle et d'autres sources:
Exemple 1
Un exemple simple dobject-oriented PL/SQLcreate or replace type base_type as object ( a number, constructor function base_type return self as result, member function func return number, member procedure proc (n number) ) instantiable not final; / Maintenant, la codification du type est accomplie. Donc, il est défini comment se conduisent-ils les fonctions de type, les procédures et les constructeurs:create or replace type body base_type as constructor function base_type return self as result is begin a:=0; return; end base_type;
member function func return number is begin return a; end func;
member procedure proc (n number) as begin a:=n; end proc; end; / On est prêt à dériver de base_type. Le mot-clé under est utilisé pour la dérivation. Le type dérivé définit un nouvel attribut (nommé m), qui superpose func.create or replace type deriv_type under base_type ( m number, overriding member function func return number ); / Comme les types bases, il faut codifier les méthodes superposées au type dérivé:create or replace type body deriv_type as overriding member function func return number is begin return m*a; end; end; / Les types créés peuvent être instanciés et les méthodes peuvent être demandées:declare b1 base_type :=base_type(); b2 base_type :=base_type(4); d1 deriv_type:=deriv_type(5,6); d2 deriv_type:=deriv_type(5,6); begin dbms_output.put_line(b1.func); dbms_output.put_line(b2.func);
d1.proc(4); dbms_output.put_line(d1.func); dbms_output.put_line(d2.func); end; / Résultats 0 4 24 30 Les types créés sont devenus des types réels'' (finaux) et on les peut utiliser pour attributs dans tables:create table table_base ( b base_type ); declare base base_type := base_type(); deriv deriv_type:= deriv_type(8,9); begin insert into table_base values(base); insert into table_base values(deriv); end; / select t.b.func() from table_base t; T.B.FUNC() Résultats : 0 72 select avg(t.b.func()) from table_base t; AVG(T.B.FUNC()) Résultat : 36
Exemple 2 Un autre exemple de procédure stockée en Java intégré est rencontré dans Oracle Documentation.
Bibliographie
Articles connexes Base de données relationnelle Transact-SQL Système de gestion de base de données
Sources
Notes et références
Liens externes Exemples d'O-Pl/SQL
Catégorie:Programmation orientée objet Catégorie:Système de gestion de base de données Catégorie:Langage de programmation Catégorie:Langage de requête Catégorie:Logiciel Oracle