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 :
update RequestPayment set Status = @Status from RequestPayment rp where rp.RequestPaymentOID in (5,6)
J'appelle la proc stock de cette manière:
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