Dimanche 23 novembre 2008 7 23 /11 /Nov /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.


Par LAO - Publié dans : ORACLE 11 - Communauté : ORACLE
Ecrire un commentaire - Voir les 2 commentaires
Retour à l'accueil

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.
Commentaire n°1 posté par Thomas le 26/02/2009 à 08h04
Merci pour le lien.

Mais comment tu utiliserais cela dans le cas précis du post ?
LAO.
Réponse de LAO le 27/02/2009 à 14h54
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 !
Commentaire n°2 posté par Thomas le 28/02/2009 à 10h21

Catégories

Recherche

Calendrier

Février 2012
L M M J V S D
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29        
<< < > >>

Profil

  • LAO
  • My Oracle blog
  • Homme
  • 06/05/1972
  • IDF
  • DBA
Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus - Articles les plus commentés