我遇到了这个程序的问题。 这是代码
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设置一个值。
答案 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)