Bonjour, dans une solution WPF j'exécute cette procédure stockée SQL via entityFramework comme suit.
1) Code de la procédure :
2) Code C# :
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
37
38
39
40 ALTER PROCEDURE [dbo].[PS_SAVEDOCUMENT] -- Add the parameters for the stored procedure here @deId varchar(10), @User varchar(50), @ddId int, @dddId int, @lib varchar(100), @mdp varchar(50), @dateSave datetime, @documentTag varchar(5) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; begin transaction; begin try if (@ddId <> 0 and @dddId <> 0) begin insert into STOREDATAS(KD_DATE_CREAT,KD_USER_CREAT,DE_ID,DD_ID,DDD_ID,KD_LIB,KD_MDP, CRDC_REFERENCE) select @dateSave,@User,@deId,@ddId,@dddId,@lib,@mdp, COALESCE(@documentTag, null); end if (@ddId <> 0 and @dddId = 0) begin insert into STOREDATAS(KD_DATE_CREAT,KD_USER_CREAT,DE_ID,DD_ID,KD_LIB,KD_MDP, CRDC_REFERENCE) select @dateSave,@User,@deId,@ddId,@lib,@mdp, COALESCE(@documentTag, null); end if (@ddId = 0 and @dddId = 0) begin insert into STOREDATAS(KD_DATE_CREAT,KD_USER_CREAT,DE_ID,KD_LIB, KD_MDP, CRDC_REFERENCE) select @dateSave,@User,@deId,@lib,@mdp, COALESCE(@documentTag, null); end commit transaction; end try begin catch if @@TRANCOUNT > 0 rollback transaction; end catch END
lors de l'exécution j'ai ce message d'erreur :
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 public Task SaveDocument() { try { using (ArchiveEntities dc = new ArchiveEntities()) { int i = dc.PS_SAVEDOCUMENT(DirectoryId, Queries.UserId(), SubDirectoryId, SsDirectoryId, $"{RenamedFile}{Extension}", null, DateSave, DocumentTagId); if (i == 0) { UserMessages.ShowMessage("Le document n'a pas été sauvegardé.", "Sauvegarde", UserMessages.MessageType.Error); return Task.CompletedTask; } } return Task.CompletedTask; } catch (Exception ex) { UserMessages.ShowMessage(ex.Message, "Sauvegarde", UserMessages.MessageType.Error); return Task.FromException(ex); } }
SqlException : Le nombre des transactions après EXECUTE indique un nombre différent d'instructions BEGIN et COMMIT. Nombre précédent = 1, nombre actuel = 0.
Il me semble pourtant que ma procédure Stockée est correct...
Merci de votre aide
Partager