SQL存储过程报错Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar',请教高手

来源:百度知道 编辑:UC知道 时间:2024/05/24 22:57:40
@month varchar(20), --年月
@daytotal int --月天数
AS
declare @logtable varchar(20)
declare @icount int
declare @sumtemp int
declare @sum int
declare @sql varchar(50)
set @logtable=@month+'00'
set @icount=0
set @sumtemp=0
set @sum=0
begin
while(@icount<=@daytotal)
begin
select @logtable=@logtable+1
set @sql=N'select @sumtemp=count(*) from log@logtable where content like ''感谢使用%'' '
exec sp_executesql @sql
select @sum=@sum+@sumtemp
end
end

运行报错Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar',大家帮我看看是为什么呢?
经过simenyu提醒,修改后原先的错误没有了,主题部分改为
select @logtable=@logtable+1
set @sql=N'select @sumtemp=count(*) from log@logtable where content like ''感谢使用%'' '
exec sp_executesql @sql,N'@sumtemp int out,@logtable int ',@sumtem

出现这个提示,是因为变量@sql的类型有误,声明时应该写成nvarchar,如:
declare @sql nvarchar(50)

补充:
过程参数错误,试试改成这样
select @logtable=@logtable+1
set @sql=N'select @sumtemp=count(*) from log'+@logtable+' where content like ''感谢使用%'' '
exec sp_executesql @sql,N'@sumtemp int out',@sumtemp output
select @sum=@sum+@sumtemp

set @sql=N'select @sumtemp=count(*) from log@logtable where content like ''感谢使用%'' '
改成

set @sql=N'select @sumtemp=count(*) from log@logtable where content like ''%感谢使用%'' '

好像是这个变量的数据类型不匹配