修改后的存储过程``哈哈``可以输出总记录数 总页数

原创 2004年06月26日 15:33:00

CREATE PROCEDURE pro_Paging
(
@Tables varchar(100),
@PK varchar(100),
@Sort varchar(200) = NULL,
@PageNumber int = 1,
@PageSize int = 10,
@TotalCount int output,  --add by dcboy
@TotalPage int output, --add by dcboy
@Fields varchar(1000) = '*',
@Filter varchar(1000) = NULL,
@Group varchar(1000) = NULL)
AS

/*Default Sorting*/
IF @Sort IS NULL OR @Sort = ''
 SET @Sort = @PK

/*Find the @PK type*/
DECLARE @SortTable varchar(100)
DECLARE @SortName varchar(100)
DECLARE @strSortColumn varchar(200)
DECLARE @operator char(2)
DECLARE @type varchar(100)
DECLARE @prec int

/*Set sorting variables.*/ 
IF CHARINDEX('DESC',@Sort)>0
 BEGIN
  SET @strSortColumn = REPLACE(@Sort, 'DESC', '')
  SET @operator = '<='
 END
ELSE
 BEGIN
  IF CHARINDEX('ASC', @Sort) = 0
   SET @strSortColumn = REPLACE(@Sort, 'ASC', '')
  SET @operator = '>='
 END


IF CHARINDEX('.', @strSortColumn) > 0
 BEGIN
  SET @SortTable = SUBSTRING(@strSortColumn, 0, CHARINDEX('.',@strSortColumn))
  SET @SortName = SUBSTRING(@strSortColumn, CHARINDEX('.',@strSortColumn) + 1, LEN(@strSortColumn))
 END
ELSE
 BEGIN
  SET @SortTable = @Tables
  SET @SortName = @strSortColumn
 END

SELECT @type=t.name, @prec=c.prec
FROM sysobjects o
JOIN syscolumns c on o.id=c.id
JOIN systypes t on c.xusertype=t.xusertype
WHERE o.name = @SortTable AND c.name = @SortName

IF CHARINDEX('char', @type) > 0
   SET @type = @type + '(' + CAST(@prec AS varchar) + ')'

DECLARE @strPageSize varchar(50)
DECLARE @strStartRow varchar(50)
DECLARE @strFilter varchar(1000)
DECLARE @strSimpleFilter varchar(1000)
DECLARE @strGroup varchar(1000)

-------------------------------------
DECLARE @sql nvarchar(1000)
IF @Filter=''
 SET @sql='SELECT @TotalCount=count(
'+@PK+') FROM '+@Tables
ELSE
 SET @sql='SELECT @TotalCount=count(
'+@PK+') FROM '+@Tables+' WHERE ' +@Filter
EXEC sp_executesql @sql,N'@TotalCount int out',@TotalCount out
--print @TotalCount
IF @TotalPage%@PageSize=0
 SET @TotalPage=@TotalCount/@PageSize
ELSE
 SET @TotalPage=@TotalCount/@PageSize+1

--print @TotalPage
------------------------------------

/*Default Page Number*/
IF @PageNumber < 1
 SET @PageNumber = 1
IF @PageNumber>@TotalPage
 SET @PageNumber=@TotalPage

/*Set paging variables.*/
SET @strPageSize = CAST(@PageSize AS varchar(50))
SET @strStartRow = CAST(((@PageNumber - 1)*@PageSize + 1) AS varchar(50))

/*Set filter & group variables.*/
IF @Filter IS NOT NULL AND @Filter != ''
 BEGIN
  SET @strFilter = ' WHERE ' + @Filter + ' '
  SET @strSimpleFilter = ' AND ' + @Filter + ' '
 END
ELSE
 BEGIN
  SET @strSimpleFilter = ''
  SET @strFilter = ''
 END
IF @Group IS NOT NULL AND @Group != ''
 SET @strGroup = ' GROUP BY ' + @Group + ' '
ELSE
 SET @strGroup = ''


/*Execute dynamic query*/ 
EXEC(
'
DECLARE @SortColumn ' + @type + '
SET ROWCOUNT ' + @strStartRow + '
SELECT @SortColumn=' + @strSortColumn + ' FROM ' + @Tables + @strFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '
SET ROWCOUNT ' + @strPageSize + '
SELECT ' + @Fields + ' FROM ' + @Tables + ' WHERE ' + @strSortColumn + @operator + ' @SortColumn ' + @strSimpleFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '
'
)
GO

总页数,页码,起始记录数之间的关系

totalRecords:总记录数 pageRecordNum:每页最多显示记录数 totalPages:总页数 pageNo:页码 pageBegin:每页开始的记录数 pageEnd...
  • u013033038
  • u013033038
  • 2015年03月11日 19:50
  • 1026

分页查询记录总页数

记总记录数:totalNum 每页最大记录数:pageSize 算法一: pageNum = totalNum % pageSize == 0 ? totalNum / pageSize :...
  • cpp1781089410
  • cpp1781089410
  • 2015年11月18日 13:24
  • 680

Easy ui数据属性(当前页数,总页数,总记录数,当前记录数)

var grid = $('#grid'); var options = grid.datagrid('getPager').data("pagination").options; ...
  • xiaomageit
  • xiaomageit
  • 2015年12月21日 08:43
  • 1660

分页列表计算总页数

方法1、   总页数 = (总记录数 + 每页数据大小  - 1) / 每页数据大小 方法2、 可使用Math.ceil()函数,该函数需要强类型转换(向上取整是指:浮点数取整) 总页数 ...
  • u012760900
  • u012760900
  • 2018年01月03日 21:59
  • 91

jqGrid设置某一行被选中的写法和获取当前页数、显示记录数的写法

$("#temptableid").setSelection(1); //第一行被选中,不存在$("#temptableid").setSelection(0);的写 ...
  • u010690818
  • u010690818
  • 2017年03月28日 11:29
  • 1638

jquery easyui datagrid 获取当前页 记录数 总页数

datagrid的url设置完之后 可以使用load方法带参数查询 不过翻页后无法继续带条件 因为翻页时是用的url的地址 只有page和rows参数.因此可以使用如下方法获取分页插件中当前页等参数 ...
  • lee4037
  • lee4037
  • 2014年02月18日 19:01
  • 2972

MySQL的分页!!!!存储过程返回页数和当前页结果集!!!

mysql的分页比较简单,只需要limit offset,length就可以获取数据了,但是当offset和length比较大的时候,mysql明显性能下降 一、语法limit offset,leng...
  • del1214
  • del1214
  • 2011年06月19日 09:13
  • 1812

JPA实现分页 返回总数

public List obtainMicroBlogs(String owner, int begin, int size) { Query query = entityManager .cre...
  • Msoso_______1988
  • Msoso_______1988
  • 2012年06月27日 17:19
  • 3097

可查询表中总条数和总页数的分页存储过程

if exists(select 1 from sysobjects where name = proc_pagination) drop proc proc_paginationgocreate p...
  • Cyanapple_wen
  • Cyanapple_wen
  • 2010年03月23日 22:43
  • 2851

GridView中显示记录的总条数,和当前页和总页数

GridView中显示记录的总条数,和当前页和总页数GridView中,显示记录的总条数在SqlDataSource 的Selected方法中添加如下 程序代码protected void SqlDa...
  • sooobest
  • sooobest
  • 2008年03月19日 16:19
  • 883
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:修改后的存储过程``哈哈``可以输出总记录数 总页数
举报原因:
原因补充:

(最多只允许输入30个字)