1

我对这个程序有疑问。这是代码

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 

“程序需要‘ntext/nchar/nvarchar’类型的参数‘@statement’。”

我不是在发表声明吗?(@sql)

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

4

2 回答 2

5

根据手册,您应该为调用的参数提供一个值@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 

只要按照说明书,你就没事了。

于 2012-04-27T17:11:49.307 回答
0

您的代码在 SQL2008 R2 上对我来说可以正常工作。你在运行什么版本?您可以尝试将最后一行替换为:

exec (@sql)
于 2012-04-27T10:56:53.620 回答