小妹刚学写存储过程,昨天弄了一下午也不知道要怎么改,请各位大虾帮帮
CREATE PROCEDURE [select_paging_pro] 
@tabName varchar(50),
@selField varchar(100),
@where varchar(100),
@order varchar(100),
@keyValues varchar(50),
@currentPage int,
@pageSize int,
@pageCount int outputASdeclare @strSql varchar(200)declare @count int
set @strSql = 'select @count=count(*) from '  + @tabName + @where
set @pageCount = @countexec (@strSql)declare @Id1 varchar(10)
set @Id1=cast(@pageSize as varchar(20))declare @strTop int
set @strTop = (@currentPage - 1)*@pageSize declare @Id2 varchar(10)
set @Id2 =cast(@strTop as varchar(20))begin
if @currentPage = 1
set @strSql = 'select top ' + @Id1 + ' ' + @selField + ' from ' + @tabName + ' ' + @where + ' ' + @order
else
set @strSql = 'select top ' + @Id1 + ' ' + @selField + ' from ' + @tabName + ' ' + @where + ' and ' + @keyValues + ' not in (select top ' + @Id2 + ' ' + @selField + ' from ' + @tabName + ' ' + @where + ' ' + @order  + ')' + ' ' + @orderexec (@strSql)
endGO执行时,那个pagecount(总页数)总是取不到

解决方案 »

  1.   

    declare @strSql nvarchar(2000)
    set @strSql = 'select @count=count(*) from ' + @tabName + @where
    execute sp_executesql @strSql,N'@count int output',@count=@pagecount output
      

  2.   

    解决了  是这样子的
    CREATE PROCEDURE [select_paging_pro] 
    @tabName varchar(50),
    @selField varchar(100),
    @where varchar(100),
    @order varchar(100),
    @keyValues varchar(50),
    @currentPage int,
    @pageSize int,
    @pageCount int=1 outputASdeclare @strSql nvarchar(800)set @strSql=N'select  @pageCount=count(*) from ' + @tabName + ' ' + @where
    exec sp_executesql @strSql,N'@pageCount int output',@pageCount output
    declare @Id1 varchar(10)
    set @Id1=cast(@pageSize as varchar(20))declare @strTop int
    set @strTop = (@currentPage - 1)*@pageSize declare @Id2 varchar(10)
    set @Id2 =cast(@strTop as varchar(20))begin
    if @currentPage = 1
    set @strSql = 'select top ' + @Id1 + ' ' + @selField + ' from ' + @tabName + ' ' + @where + ' ' + @order
    else
    set @strSql = 'select top ' + @Id1 + ' ' + @selField + ' from ' + @tabName + ' ' + @where + ' and ' + @keyValues + ' not in (select top ' + @Id2 + ' ' + @selField + ' from ' + @tabName + ' ' + @where + ' ' + @order  + ')' + ' ' + @orderexec (@strSql)
    end
    GO