我在SQL 2005中编写了一个相当简单的SQL查询,但遇到了一个问题,无法弄清楚出了什么问题。
出于文档目的,查询必须是动态sql
我的查询片段是:
@RecCreatorID int
....
....
IF (@RRecCreatorID IS NOT NULL)
Begin
Set @strSQL = @strSQL + ' AND RecCreatorID = @RecCreatorID'
End
然而,当我运行PRINT @strSQL时,我得到的是
和RecCreatorID = @RecCreatorID
如何才能显示@RecCreatorID的实际值?
答案 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。