Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1719 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [PL/SQL] récupération d'un sequence.currval ?????

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PL/SQL] récupération d'un sequence.currval ?????

n°496334
liengy
Approuved !!!
Posté le 25-08-2003 à 09:28:00  profilanswer
 

Voilà j'ai un code pl/sql, et j'aimerais faire un truc de ce genre :
 
(dans le DECLARE)
curr_idZone    number(2);
 
(dans le BEGIN-END)
curr_idZone := SEQ_ZONE_GEO.currVal;
 
 
La séquence utilisée existe bien puisqu'elle est déjà utilisée ailleurs....
 
Je voudrais savoir si ce que je cherche à faire est possible ou non ???

mood
Publicité
Posté le 25-08-2003 à 09:28:00  profilanswer
 

n°496421
tomlameche
Et pourquoi pas ?
Posté le 25-08-2003 à 10:13:24  profilanswer
 

liengy a écrit :

Voilà j'ai un code pl/sql, et j'aimerais faire un truc de ce genre :
 
(dans le DECLARE)
curr_idZone    number(2);
 
(dans le BEGIN-END)
curr_idZone := SEQ_ZONE_GEO.currVal;
 
 
La séquence utilisée existe bien puisqu'elle est déjà utilisée ailleurs....
 
Je voudrais savoir si ce que je cherche à faire est possible ou non ???


Tu peux en faisant :
SELECT SEQ_ZONE_GEO.currval
into curr_idZone
from dual;


---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité
n°496437
liengy
Approuved !!!
Posté le 25-08-2003 à 10:22:53  profilanswer
 

tomlameche a écrit :


Tu peux en faisant :
SELECT SEQ_ZONE_GEO.currval
into curr_idZone
from dual;
 

Merci bcp :jap:

n°498507
M@rs
Posté le 26-08-2003 à 14:19:35  profilanswer
 

Attention, tu ne peux faire appel a la fonction "currval" que si cet appel a été précédé, dans la même session, d'un appel a la focntion "nextval".
 
Sinon, tu peux en effet utiliser :
select nom_sequence.nextval from dual;
select nom_sequence.currval from dual;
 
 

n°499858
liengy
Approuved !!!
Posté le 27-08-2003 à 17:40:10  profilanswer
 

M@rs a écrit :

Attention, tu ne peux faire appel a la fonction "currval" que si cet appel a été précédé, dans la même session, d'un appel a la focntion "nextval".
 
Sinon, tu peux en effet utiliser :
select nom_sequence.nextval from dual;
select nom_sequence.currval from dual;
 
 
 

Oui bien entendu... ;)  
Merci...

n°499970
MagicBuzz
Posté le 27-08-2003 à 20:11:01  profilanswer
 

à ce moment, faire un select sur currval est inutile, puisque nextval à retourné le même résultat ;)

n°499973
MagicBuzz
Posté le 27-08-2003 à 20:12:33  profilanswer
 

sinon, j'y pense, selon les paramètres d'Oracle, currval n'a pas toujours la valeur actuelle ! (très important !!!)
 
en effet, si la fonction de cache est activée (pour une séquence très solicitée c'est très utile), il va générer à l'avance plusieurs numéros. et le currval contient le tout dernier, qui n'a pas forcément été encore attribué par un nexval !

n°500237
liengy
Approuved !!!
Posté le 28-08-2003 à 09:24:06  profilanswer
 

Et ???
 
Y a une solution à ça ?


Message édité par liengy le 28-08-2003 à 09:24:25
n°500315
MagicBuzz
Posté le 28-08-2003 à 10:35:05  profilanswer
 

utiliser nextval et conserver sa valeur dans une variable pour quand tu en a besoin

n°500741
liengy
Approuved !!!
Posté le 28-08-2003 à 16:43:39  profilanswer
 

MagicBuzz a écrit :

utiliser nextval et conserver sa valeur dans une variable pour quand tu en a besoin

Oui mais si le nextval, je l'utlise dans un INSERT...
Je peux pas l'utiliser, et mettre sa valeur dans une variable....

mood
Publicité
Posté le 28-08-2003 à 16:43:39  profilanswer
 

n°512306
jenner
Posté le 11-09-2003 à 11:23:44  profilanswer
 

je ne comprend pas ce que tu viens d'écrire...
 
Par défaut, les séquences ORACLE sont créés avec l'attribut CACHE=20.
C'est une optimisation des perf. ie à l'invocation d'une séquence, 20 numéro sont flushés et utilisable sur SEQ.NextVal jusqu'il n'y en ai plus en mémoire et la rebelotte reflushage de 20 num.
Ce système est donc perf. mais gache des numéro de seq. dans le cas ou ta base est arrêtée et relance courrament car tu perds le cache à chaque fois.
 
le SEQ.CurrVal te donne la val courante de la SEQ, car il faut d'abord invoquer SEQ.NextVAl qui prend le prend num SEQ dispo


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [PL/SQL] récupération d'un sequence.currval ?????

 

Sujets relatifs
SQL supprimer des données d'une table en fonction d'une autreRequete SQL trop hard pour moi !
[MySQL] type char et norme SQL[SQL] insertion pb de clé (DTS SQL SERVER)
[SQL]jointure entre 3 tablesRecuperation auto de fichier zip sur un wiki
[PHP/SQL] Récupérer une valeur[Access/SQL] Quick Question sur les indexes
[ASP/SQL] problème insert into......[SQL] visualiser un fichier .sql
Plus de sujets relatifs à : [PL/SQL] récupération d'un sequence.currval ?????


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR