SP_EXECUTESQL and Output Parameter SP_EXECUTESQL and Output Parameter sql sql

SP_EXECUTESQL and Output Parameter


First, select the desired id in an output variable using @Id = ([ID]) then assign this @Id OUTPUT value in the @Id variable using @Id = @Id OUTPUT. Also, you should pass data in where clause using a variable to avoid sql injection problem like [ModulId] = @IdModul (i.e. you should not concatenate it like [ModulId] = ' + @IdModul). try this :

DECLARE @SqlQuery NVARCHAR(MAX)SET @SqlQuery = 'SELECT TOP (1) @Id = ([ID]) FROM '                + @TblZimz + ' WHERE [ModulId] = @IdModul'EXEC SP_EXECUTESQL  @SqlQuery,  N'@Id INT OUTPUT, @IdModul INT',  @IdModul = @IdModul,  @Id = @Id OUTPUT 

Check details of SP_EXECUTESQL here


Like Deepak's answer, but easier:

EXEC SP_EXECUTESQL @SqlQuery,
N'@Id INT OUTPUT, @IdModul INT',
@IdModul OUTPUT, @Id