sp_executesql n'exécute pas le code..
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 :
Citation:
update RequestPayment set Status = @Status from RequestPayment rp where rp.RequestPaymentOID in (5,6)
J'appelle la proc stock de cette manière:
Code:
1 2 3
| declare @ret int
exec @ret = upd_csa_RequestPayment '5,6', 'V'
select @ret |
Code:
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 |