在存储过程中将EXEC命令执行的结果赋给变量的有关问题?

在存储过程中将EXEC命令执行的结果赋给变量的问题???declare@strvarchar(500)set@strN select@recordcoun

在存储过程中将EXEC命令执行的结果赋给变量的问题???
declare   @str   varchar(500)

set   @str   =   N 'select   @recordcount   =   count(ProjectID)   from   [ '+@ToDbName+ '].[dbo].[ContractReportData]   where   ProjectStartDate   =   ' ' '+convert(varchar,@PrevDateTime,120)+ ' ' '   and   ProjectEndDate   =   ' ' '+convert(varchar,@NextDateTime,120)+ ' ' '   and   Type= ' ' '+@Type+ ' ' ' '

exec   sp_executesql   @str,N '@recordcount   int   output ',   @recordcount   output
if(@recordcount   =0)
......

这个报错:服务器:   消息   214,级别   16,状态   2,过程   sp_executesql,行   14
过程需要参数   '@statement '   为   'ntext/nchar/nvarchar '   类型。

在另一个存储过程中,我用和这个相同的方法,只是表名不一样而已,就不报这个错误,请问:这是为什么?

[解决办法]
declare @str nvarchar(500)