如何在SQL Server 2005中通过其值动态替换变量

时间:2014-04-01 13:16:48

标签: sql-server-2005

我有一个问题场景,如下所述。

 DECLARE @WhereClause VARCHAR(MAX)
 SET @WhereClause = 'Address = ''A'' AND AppId = @AppId'
 --I have values like below:
 SET @AppId = '123333' 
 SET @param = @AppId --This information I retrieve from database

现在我想将@whereClause中的@AppId替换为值123333.我只有@param变量的信息,我可以使用@param替换@AppId,因为我从动态数据库中获取@param变量

SET @WhereClause = REPLACE(@WhereClause,@ param,' ???')

我需要能够用@WhereClause中的值替换AppId的东西。我有@param变量,我可以用它来知道需要替换哪个变量。

1 个答案:

答案 0 :(得分:1)

查看sp_executesql功能。这应该做你需要的:

Declare @sql varchar(max); set @sql = ' ... ';

set @sql = @sql + @WhereClause;
declare @Params nvarchar(max); set @Params = N'@ID nchar(5)';

EXECUTE sp_executesql @sql, @ParmDefinition, @ID = @Appid;