日期:2014-05-17  浏览次数:21167 次

SQL求助, 过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'。
本帖最后由 Pc498471249 于 2013-01-31 16:26:16 编辑
错误如题, 我先贴上存储过程代码

ALTER PROCEDURE [dbo].[GetAllCount]
AS
BEGIN
    declare @countsql varchar(100);
    declare @allcount bigint=0; /*总行数*/
    declare @count int;         /*当前表行数*/
    declare @currentTemp int; /*起始迭代数*/
    set @currentTemp=10000;
    while(@currentTemp<=99999)
    begin
set @countsql='select @count=count(QQNumber) from tab_'+convert(varchar(10),@currentTemp);
exec sp_executesql @countsql,N'@count int output',@count output;
set @allcount=@allcount+@count;
    end
    return @allcount;
END



完了, 我要统计99999张表的数据总和, 循环每张表统计个数然后累加给一个公共的值, 最后返回,  逻辑思路没错啊。。没啥会有这个怪问题捏。。。。。。。。

消息 214,级别 16,状态 2,过程 sp_executesql,第 1 行
过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'。

------解决方案--------------------
declare @countsql varchar(100);
=>
declare @countsql nvarchar(1000);
------解决方案--------------------
引用:
引用:declare @countsql varchar(100);
=>
declare @countsql nvarchar(1000);
??? 跟语句大小有关系????  我每次循环的时候 都重新覆盖了上一条语句, 为啥要把字符串改长点呢

declare @countsql nvarchar(1000);