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

Sybase Discussion :

[ASE] Synchronisation des instructions dans procédure stockée


Sujet :

Sybase

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2002
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 114
    Points : 59
    Points
    59
    Par défaut [ASE] Synchronisation des instructions dans procédure stockée
    Bonjour,

    Dans une procédure stockée, j'exécute (entre autre) les instructions suivantes :

    Instruction 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    IF EXISTS (select 'x' from sysobjects where name='CONTRAINTE1')
       BEGIN
          ALTER TABLE MA_TABLE DROP CONSTRAINT CONTRAINTE1
       END
    Instruction 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT MA_TABLE (champ1, champ2)
    SELECT (champ1, champ2) FROM MA_TABLE_TEMP

    L'insert de l'instruction 2 ne peut se faire que si la contrainte CONTRAINTE1 a été supprimée par l'instruction 1.

    A l'exécution de la procédure stockée, j'ai une erreur qui me dit que l'insert ne peut pas se faire en raison de la contrainte. Déjà, c'est bizarre car elle est censée avoir été supprimée.

    Ce qui est encore plus bizarre, c'est qu'ensuite, si j'exécute à part mon instruction 2 dans une fenêtre SQL, l'insert s'exécute normalement (ce qui prouve que la contrainte a bien été supprimée dans la procédure stockée)

    Je me demande alors si le code ne s'exécute pas trop vite et que l'instruction 2 démarre avant que l'instruction 1 ne soit terminée.
    Mais je trouverais ça quand même bizarre.

    Pouvez-vous me dire ce que vous en pensez ?

    Merci

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Je pense que la contrainte existe encore lorsque l'insert est exécuté, et ce parce que les deux instructions sont exécutée dans le même "batch".

    Ce problème devrait pouvoir être contourné via un EXECUTE IMMEDIATE:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    exec ("INSERT MA_TABLE (champ1, champ2)
    SELECT (champ1, champ2) FROM MA_TABLE_TEMP")
    Michael

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2002
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 114
    Points : 59
    Points
    59
    Par défaut
    Donc, c'est bien ce que je pensais.
    Mais est-ce bien normal ?
    En fait nous avons récupéré cette base qui est installé chez un de nos client qui lui n'a pas ce pb.
    Les différences :
    - nous sommes en V 12.5.4 et eux en V 12.5.3
    - nous sommes en Windows 2000 et eux SunOS 5.8

    Cela peut-il justifier ce comportement étrange ?

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2002
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 114
    Points : 59
    Points
    59
    Par défaut
    Etrangement, le pb venait des droits d'un utilisateur sysbase

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Qu'est-ce qu'il lui manquait ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. 2 instruction SELECT dans procédure stockée
    Par nasimpat7 dans le forum Développement
    Réponses: 5
    Dernier message: 15/04/2009, 14h03
  2. Réponses: 0
    Dernier message: 15/01/2009, 17h09
  3. Réponses: 8
    Dernier message: 12/11/2007, 11h16
  4. Réponses: 3
    Dernier message: 21/10/2006, 23h46
  5. SQL dans Procédure stockée
    Par julure dans le forum Oracle
    Réponses: 13
    Dernier message: 02/11/2004, 17h57

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