Bonjour,
J'ai un souci lors d'un update. Cette procédure est appelé depuis un webService en C#. Des dizaines d'autres procédures sont appelées dans le programme, dans des contextes parfois similaires, et fonctionnent.
Dans la procédure, un select de la variable @qte ou de la variable @paPondere renverra le bon résultat.
Le dernier Select de la procédure renvoie le bon résultat. Pourtant, lorsque je fais ce même select depuis une requête directe du SQL Mangement Studio, ou que j'essaie de récupérer la valeur de PaPondere dans le Service, le Pa pondéré n'a pas été mis à jour. La table n'a pas été updatée.
Ce n'est apparemment pas un problème de cache, puisqu'on n'a pas "un coup d'avance", la valeur ne bouge pas du tout.
J'ai essayé d'exécuter le contenu de la procédure avec un tphaRefID en "dur" depuis une requête dans le Management Studio, et la tout fonctionne normalement.
Avec des collègues, nous avons essayé beaucoup de choses: transaction, forcer un commit, try/catch...
Le paramètre @tphaRefID passé est le bon.
Même si on change @paPondere par un chiffre en dur dans l'update, l'update ne se fait pas.
Si on fait l'update sur une autre colonne de la table, cela ne fonctionne pas non plus.
Aucun message d'erreur n'est renvoyé.
N'hésitez pas à me demander d'autres précisions!
Edition: ajout des préfixes.
La procédure en question:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 ALTER PROCEDURE [dbo].[uspListeReferencesUpdatePaPondere] @tphaRefID int AS BEGIN SET NOCOUNT ON; DECLARE @qte int DECLARE @paPondere decimal SELECT @qte = (SUM(QteHomogene) + SUM(QteStd00) + SUM(QteStd81) + SUM(QteStd82) + SUM(QteStd83)) FROM [dbo].TPHA_CDETAILLE INNER JOIN [dbo].TPHA_CDE ON [dbo].TPHA_CDE.TphaCdeID = [dbo].TPHA_CDETAILLE.TphaCdeID WHERE TphaRefID = @tphaRefID AND ISNULL((QteSuisse + QteEspagne + QteFranchises) * 100 / NULLIF (@qte, 0), 0) < 100 AND DateAnnulation IS NULL SELECT @paPondere = (SUM(Qte*PrixAchat) / NULLIF(@qte,0)) FROM [dbo].vListeCommandes WHERE TphaRefID = @tpharefID AND PctInternational < 100 AND DateAnnulation IS NULL UPDATE [dbo].TPHA_REF SET PaPondere = @paPondere WHERE TphaRefID = @tphaRefID END
Partager