Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
23 novembre 2008 7 23 /11 /novembre /2008 10:56

Bonjour,


On continue un peu avec les "petites nouveautés" d'ORACLE 11.

Avant ORACLE 11, lorsque vous vouliez récupérer la dernière valeur d'une séquence il fallait passer par la table "DUAL" avec quelque chose comme ca



SELECT my_seq.NEXTVAL INTO my_var FROM DUAL;

Et bien avec ORACLE 11, on peut simplifier notre code de la façon suivante:


my_var :=my_seq.NEXTVAL;



Bien evidemment, je vous conseille de n'utiliser cette syntaxe qu'uniquement si votre environnement est totalement ORACLE 11. Car si vous vouliez portez votre code sur une version antérieure, cela ne fonctionnerait pas.

Il ne semble pas y avoir de différence de performance entre les deux possibilités.


LAO.


Partager cet article
Repost0

commentaires

T
Pour l'exemple du post:<br /> <br /> $IF DBMS_DB_VERSION.VER_LE_11<br /> $THEN<br /> my_var := my_seq.NEXTVAL;<br /> $ELSE<br /> SELECT my_seq.NEXTVAL<br /> INTO my_var<br /> FROM dual;<br /> $END<br /> <br /> Cela compilera aussi bien dans une version 10 que 11.<br /> Au passage: très intéressants les articles !<br /> Bonne continuation !
Répondre
T
Il y a moyen de développer un code avec cette syntaxe et qui serait valable pour, par exemple, une 10g, en utilisant les directives de compilation et le package dbms_db_version. Un exemple sur http//http://www.oracle.com/technology/oramag/oracle/06-jul/o46plsql.html par l'excellent Steven Feuerstein.
Répondre
L
<br /> Merci pour le lien.<br /> <br /> Mais comment tu utiliserais cela dans le cas précis du post ?<br /> LAO.<br /> <br /> <br />