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