分页存储过程

来源:互联网 发布:linux nc命令 编辑:程序博客网 时间:2024/05/22 12:35
create proc AAA(@PageSize int,@PageIndex int,@TotalCount int output)asbegin   declare @Countsql nvarchar(2000)   declare @Sql nvarchar(2000)      set @Countsql ='select @TotalCount=count(*) from dbo.spt_values'   execute sp_executesql @Countsql ,N'@TotalCount int output',@TotalCount output--只屏蔽此行时,显示@TotalCount值为NULL      set @Sql = 'select row_number() over(order by name asc) as rownum, spt_values.* from spt_values'   set @Sql ='select * from ('+@Sql+') as Temp where Temp.rownum >= '   +CONVERT (nvarchar(200),(@PageIndex - 1)*@PageSize+1)+' and Temp.rownum <='+ CONVERT (nvarchar(200),@PageIndex*@PageSize)      execute sp_executesql @Sql    select @TotalCount --只屏蔽此行时,结果中不显示@TotalCount总行数,只有分页的结记录果集end-------第一种执行存储过程的方法----------declare @PSize intdeclare @PIndex intdeclare @TCount intset @PSize =10set @PIndex  = 4execute AAA @PSize,@PIndex,@TCount  output-------第二种执行存储过程的方法-----------declare @TCount intexecute AAA 10,4,@TCount  output注释:sp_executesql为系统的存储过程,在执行动态拼接的sql语句时,需要调用当执行第二种方法时,参数的顺序为存储过程中声明的顺序set @Countsql ='select @TotalCount=count(*) from dbo.spt_values'execute sp_executesql @Countsql ,N'@TotalCount int output',@TotalCount output执行Countsql语句时,由于含有一个参数,必须在执行时用N来表明,,N'@TotalCount int output' 菜鸟一只,不对的地方望高手指出,谢谢!


 

原创粉丝点击