使用动态SQL设置参数

使用动态SQL设置参数,sql,sql-server,tsql,dynamic-sql,Sql,Sql Server,Tsql,Dynamic Sql,我一直在尝试使用动态SQL设置参数,但每次我这样做时,它总是返回NULL。下面我复制了我的代码的一个基本版本,有人能告诉我如何做我想做的事情吗 DECLARE @SQL_Prev_Values nvarchar(max), @Value nchar(100), @Prev_Values varchar(150) =' ' SET @Value = 'dave' SET @SQL_Prev_Values = 'SET @Prev_Values = @Prev_Values + ''' + RE

我一直在尝试使用动态SQL设置参数,但每次我这样做时,它总是返回NULL。下面我复制了我的代码的一个基本版本,有人能告诉我如何做我想做的事情吗

DECLARE
@SQL_Prev_Values nvarchar(max),
@Value nchar(100),
@Prev_Values varchar(150) =' '

SET @Value = 'dave'

SET @SQL_Prev_Values = 'SET @Prev_Values = @Prev_Values + ''' + REPLACE(@Value,' ' ,'')+''''
SELECT @SQL_Prev_Values
EXEC sp_executesql @SQL_Prev_values,N'@Prev_Values nchar out',@Prev_Values out 
SELECT @Prev_Values
SET @Prev_Values = @Prev_Values + 'dave'
SELECT @Prev_Values 
我在网上看到过一些东西,但它们对我来说似乎没有意义。 任何帮助都将不胜感激。
提前感谢。

正如您从下面的屏幕截图中看到的,该模板工作正常:

DECLARE @Prev_Values nchar;
DECLARE @SQL_Prev_Values NVARCHAR(MAX);

SET @SQL_Prev_Values = N'SET @Prev_Values = 1;'

EXEC sp_executesql @SQL_Prev_values,N'@Prev_Values nchar out',@Prev_Values out

SELECT @Prev_Values;


试试这个:

DECLARE
@SQL_Prev_Values nvarchar(max),
@Value nchar(100),
@Prev_Values varchar(150) =' '

SET @Value = 'dave'

SET @SQL_Prev_Values = 'SET @Prev_Values =  @Prev_Values + ''' + REPLACE(@Value,' ' ,'')+''''
SELECT @SQL_Prev_Values

EXEC sp_executesql @SQL_Prev_values,N'@Prev_Values varchar(150) out',@Prev_Values out 
SELECT @Prev_Values
输出参数的值与
sp_executesql
中设置的值不同