My Oracle blog

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.


Dim 23 nov 2008 2 commentaires
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.
Thomas - le 26/02/2009 à 08h04
Merci pour le lien.

Mais comment tu utiliserais cela dans le cas précis du post ?
LAO.
LAO
Pour l'exemple du post: $IF DBMS_DB_VERSION.VER_LE_11 $THEN my_var := my_seq.NEXTVAL; $ELSE SELECT my_seq.NEXTVAL INTO my_var FROM dual; $END Cela compilera aussi bien dans une version 10 que 11. Au passage: très intéressants les articles ! Bonne continuation !
Thomas - le 28/02/2009 à 10h21