编写一个简单的SQL Server 2005动态sql

时间:2010-06-29 12:00:20

标签: sql-server-2005 tsql

我在SQL 2005中编写了一个相当简单的SQL查询,但遇到了一个问题,无法弄清楚出了什么问题。

出于文档目的,查询必须是动态sql

我的查询片段是:

@RecCreatorID int
....
....
IF (@RRecCreatorID IS NOT NULL)
    Begin
        Set @strSQL = @strSQL + ' AND RecCreatorID = @RecCreatorID'
    End

然而,当我运行PRINT @strSQL时,我得到的是

和RecCreatorID = @RecCreatorID

如何才能显示@RecCreatorID的实际值?

2 个答案:

答案 0 :(得分:3)

@RecCreatorID int
....
....
IF (@RRecCreatorID IS NOT NULL)
    Begin
        Set @strSQL = @strSQL + ' AND RecCreatorID =' +  cast(@RecCreatorID as varchar(50))
    End

另一种解决方案是使用sp_executesql来执行查询

答案 1 :(得分:2)

使用sp_executesql。该存储过程将接受您可以在动态SQL(参数替换)中使用的参数。例如:

Set @strSQL = @strSQL + ' AND RecCreatorID = @RecCreatorID_PARAM'


exec sp_executesql @SQL,
N'@RecCreatorID_PARAM int',
@RecCreatorID_PARAM = @RecCreatorID

虽然这对于显示目的没有太大作用,但它仍然是处理动态SQL的一种更好的方式,而不是连接,imho。