sp_executesql期待声明......好吧,我把它给它

时间:2012-04-19 11:09:36

标签: sql-server

我遇到了这个程序的问题。 这是代码

declare @sql nvarchar(4000)
set @sql =  N'SELECT @resp2 = count(*) from '+ @NameTable + ' where datum = ''1'' or datum = ''2''    '
    EXEC sp_executesql
    @query = @sql,
    @params = N'@resp2 INT OUTPUT', 
    @resp2 = @resp2 OUTPUT 
  

“过程需要参数'@statement'的类型   'NTEXT / NCHAR / nvarchar的'。“

我没有发表声明吗? (@sql)

我想要做的就是在执行中为@ resp2设置一个值。

2 个答案:

答案 0 :(得分:5)

根据the manual,您应该为名为 @statement 的参数提供值,但是您将其提供为@query

所以它应该是:

declare @sql nvarchar(4000)
set @sql =  N'SELECT @resp2 = count(*) from '+ @NameTable + ' where datum = ''1'' or datum = ''2''    '
EXEC sp_executesql
@statement = @sql,
@params = N'@resp2 INT OUTPUT', 
@resp2 = @resp2 OUTPUT 

只需按照说明书操作即可。

答案 1 :(得分:0)

您的代码在SQL 2008 R2上适用于我。你在运行什么版本?您可以尝试使用以下内容替换最后一行:

exec (@sql)