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
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.
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