IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

Séquence pas encore définie dans cette session


Sujet :

Oracle

  1. #1
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 98
    Points : 58
    Points
    58
    Par défaut Séquence pas encore définie dans cette session
    Bonjour !!!

    Voila, j'ai une table dont la clé primaire est une séquence.
    Lorsqu'elle est vide, j'utilise SQLLoader pour la re-remplir.
    Il faut donc, apres le "load data", que maSequence.CURRVAL vaille la valeur de la plus grande clé primaire de maTable.
    J'ai fait un TRIGGER qui, pour chaque insertion, prend la valeur de la sequence et l'incrémente tant que la clé primaire insérée est plus grande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      select maSequence.CURRVAL into sequence FROM DUAL;
      IF INSERTING THEN
        WHILE (:NEW.maPK>sequence) LOOP
          select maSequence.NEXTVAL into sequence FROM DUAL;
        END LOOP;
      END IF;
    Mais lorsque je lance SQLLoader, j'ai une erreur:
    ORA-08002: séquence maSequence.CURRVAL pas encore définie dans cette session.
    + des erreurs disant que le trigger s'est interrompu

    Je suis aller en SQLPlus faire quelques "select maSequence.NEXTVAL FROM DUAL" histoire de faire avancer la sequence mais ca ne change rien, SQLLoader ne fonctionne pas.
    Par contre, je peux faire des insertions en PHP.

    J'ai également fais des insertion en PHP, sans avoir initialiser la sequence en SQLPlus mais si je fais "select maSequence.CURRVAL FROM DUAL" en SQLPlus, la sequence n'est pas définie...

    Voila si qqun sait me dire pourquoi maSequence n'est pas définie partout...

    Merchi :o

    Note: je suis en 9i pour Oracle...

  2. #2
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    currval n'est défini que si tu as déjà fait un nextval dans ta session

  3. #3
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 98
    Points : 58
    Points
    58
    Par défaut
    ah ok, Merci, j'ai testé: si je relance SQLPlus, je suis obligé de faire un NEXTVAL pour avoir le CURRVAL

    mais pourquoi mon TRIGGER fonctionne en PHP, alors que j'ouvre et ferme la connection pour chaque insertion? et que je n'ai pas fais de NEXTVAL ???

    Serait-ce pcq je fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO maTable VALUES (maSequence.NEXTVAL, ....
    Et que le NEXTVAL se fait avant le TRIGGER (qui est cependant en BEFORE INSERT) ???

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/07/2011, 19h50
  2. [Oracle] ORA-08002: séquence pas encore définie dans cette session
    Par cornnery dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 20/03/2009, 17h22
  3. qu'est ce qui va pas dans cette fonction???
    Par access001 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 18/04/2006, 13h10
  4. Réponses: 12
    Dernier message: 02/01/2006, 22h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo