Bonjour,
j'ai la proc stock suivante qui au lieu de faire l'update, me fait un select de @SQLString et retourne 0. Vous savez pourquoi? sp_executesql est bien sensé exécuter le contenu de la chaîne de caractères, non?
Le contenu qui m'est retourné de SQLString est :
J'appelle la proc stock de cette manière:update RequestPayment set Status = @Status from RequestPayment rp where rp.RequestPaymentOID in (5,6)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 declare @ret int exec @ret = upd_csa_RequestPayment '5,6', 'V' select @ret
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
41
42
43
44
45
46
47
48
49
50 CREATE PROCEDURE [dbo].[upd_csa_RequestPayment] -- Add the parameters for the stored procedure here ( @OIDList nvarchar(3500), @Status nchar(1) ) AS BEGIN DECLARE @error INT, @SQLString nvarchar(4000), @CharVariable nchar(1), @ParmDefinition nvarchar(50) SET @error = 0 select @CharVariable = @Status select @ParmDefinition = N'@Status nchar(1)' select SQLString = N'update RequestPayment set Status = @Status from RequestPayment rp where rp.RequestPaymentOID in (' + @OIDList + N')' /*if () GOTO NOK1*/ begin transaction update_RequestPayment EXECUTE sp_executesql @SQLString, @ParmDefinition, @Status = @CharVariable set @error = @@ERROR if @error = 0 begin GOTO OK end else begin GOTO NOK2 end OK: commit transaction update_RequestPayment return 0 /*NOK1: return -1*/ NOK2: rollback transaction update_RequestPayment return -2 END
Partager