CREATE procedure Paging --表名
@tblName varchar(50),
@strGetFields varchar(1000)='',
@fldName varchar(255)='',
@PageSize int=10,
@PageIndex int=1,
@doCount bit=0,
@OrderType bit=0,
@strWhere varchar(1500)=''
as
declare @strSQL nvarchar(4000)
declare @strTmp varchar(110)
declare @strOrder varchar(400)
declare @TotalRecord int if @doCount !=0
begin
if @strWhere !=''
set @strSQL=N'select @TotalRecord=count(*)  from '+@tblName 
else
set  @strSQL=N'select @TotalRecord=count(*)  from '+@tblName 
exec sp_executesql @strSQL,N'@TotalRecord int out',@TotalRecord out
end以上是我的翻页存储过程,在sql server查询分析器里执行的时候,提示
必须声明变量 '@TotalRecord'。
select @TotalRecord=count(*)  from UserInfo
存储过程: myWeb.dbo.Paging
返回代码 = 0
可是我明明有声明@TotalRecord啊,请问这是为什么?

解决方案 »

  1.   

    exec('select '+@TotalRecord+'=count(*)  from UserInfo')
      

  2.   

    if @strWhere !='' 
    set @strSQL=N'select @TotalRecord=count(*)  from '+@tblName 
    else 
    set  @strSQL=N'select @TotalRecord=count(*)  from '+@tblName 
    exec sp_executesql @strSQL,N'@TotalRecord int out',@TotalRecord out 
    end 没有错误啊!
    不行换成exec
    if @strWhere !='' 
    set @strSQL=N'select'+@TotalRecord+ '=count(*)  from '+@tblName 
    else 
    set  @strSQL=N'select'+ @TotalRecord+'=count(*)  from '+@tblName 
    exec (@strSQL) 
    end 
      

  3.   

    换成exec(@strSQL)依然不行,一样提示
    必须声明变量 '@TotalRecord'。
    select @TotalRecord=count(*)  from UserInfo
    存储过程: myWeb.dbo.Paging
    返回代码 = 0 
      

  4.   

    这个是变量的作用域有关系的,用
    sp_executesql吧