|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2005 Messages : 104 ![]() |
Bonjour,
je voudrais réaliser un script PL qui récupère la valeur courante d'une séquence. Or lors de l'exécution de la commande : J'ai l'erreur ORA 08002 qui dit que : Cause: sequence CURRVAL has been selected before sequence NEXTVAL Action: select NEXTVAL from the sequence before selecting CURRVAL Bref du coup je me demande s'il existe un moyen de récupérer la valeur d'une séquence sans être précédemment obligé de l'incrémenter ? Merci pour vos réponses |
|
|
00
|
|
|
#2 | ||
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 534 ![]() |
Code :
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
||
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2005 Messages : 104 ![]() |
merci
|
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 459 ![]() |
Attention au cache.
Le Last_number donne le prochain chargement du cache. Exemple avec un cache de 20, sur une séquence non chargée en mémoire : Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
||
|
|
00
|
|
|
#5 | ||
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 534 ![]() |
Bien vu McM. Dans ce cas, voici une version qui tient compte du cache:
Code :
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
||
|
|
00
|
|
|
#6 | |||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 459 ![]() |
Non, toujours pas
![]() Code :
Quand on fait appel au n° suivant (nextval), la première fois, Oracle monte en mémoire les "cache" n° suivants, et met à jour le prochain n° de la séquence en base (last_number) Tant qu'on n'a pas atteint la fin des n° en mémoire ou que ces n° en mémoire ne sont pas effacés (flush, ou écrasement), les nextval suivant lisent le n° en mémoire. En base, rien ne change. Il n'y a aucun moyen de savoir quel est le prochain n° qui sera attribué sans le réserver par un nextval si le cache > 1. Mettre un cache = 1 pour une séquence qui bouge beaucoup n'est pas trop recommandé vu qu'Oracle est donc obligé de poser un verrou sur la séquence (pour la mettre à jour) puis de la monter en mémoire, et ce à chaque appel. Un petit exemple de ce qu'il y a en base (last_number de user_sequences) et en mémoire avec un cache de 5 Citation:
__________________
More Code : More Bugs. Less Code : Less Bugs |
|||
|
|
00
|
|
|
#7 | ||
![]() Salim Développeur et DBA Oracle Inscription : octobre 2006 Messages : 872 ![]() |
Salut,
on peut remédier ce problème avec problème de l'erreur08002 Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com