Précédent   Forum des professionnels en informatique > Bases de données > Sybase
Sybase Forum sur la base de données Sybase. Avant de poster -> F.A.Q Sybase, Tutoriels Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/01/2007, 20h18   #1
Nouveau Membre du Club
 
Inscription : septembre 2002
Messages : 114
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 114
Points : 26
Points : 26
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 :
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 :
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
Goldorak2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2007, 07h51   #2
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
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 :
1
2
3
 
exec ("INSERT MA_TABLE (champ1, champ2)
SELECT (champ1, champ2) FROM MA_TABLE_TEMP")
Michael
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2007, 14h19   #3
Nouveau Membre du Club
 
Inscription : septembre 2002
Messages : 114
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 114
Points : 26
Points : 26
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 ?
Goldorak2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 08h24   #4
Nouveau Membre du Club
 
Inscription : septembre 2002
Messages : 114
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 114
Points : 26
Points : 26
Etrangement, le pb venait des droits d'un utilisateur sysbase
Goldorak2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 10h20   #5
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Qu'est-ce qu'il lui manquait ?
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h43.


 
 
 
 
Partenaires

Hébergement Web