alter procedure [dbo].[proc_getpaging]
(
@TableName nvarchar(500), --表名(可以为多表)
@ReFieldsStr nvarchar(200) = '*', --字段名(全部字段为*)
@OrderString nvarchar(200), --排序字段(支持多字段不用加order by)
@OrderType nvarchar(4)='asc', --排序类型 (ASC DESC)
@WhereString nvarchar(500) =N'', --条件语句(不用加where)
@PageSize int, --每页多少条记录
@PageIndex int = 1 , --指定当前为第几页
@TotalRecord int output , --返回总记录数
@ErrorMsg nvarchar(500) output --返回错误消息
)
as begin
begin try
declare @StartRecord int;
declare @EndRecord int;
declare @TotalCountSql nvarchar(1000);
declare @SqlString nvarchar(2000); set @StartRecord = (@PageIndex-1)*@PageSize + 1
set @EndRecord = @StartRecord + @PageSize - 1
set @TotalCountSql= N'select @TotalRecord = count(*) from ' + @TableName;--总记录数语句 set @SqlString = N'(select row_number() over (order by '+ @OrderString +' '+@OrderType+') as rowId,'+@ReFieldsStr+' from '+ @TableName;
if (@WhereString! = '' or @WhereString!=null)
begin
set @TotalCountSql=@TotalCountSql + ' where '+ @WhereString;
set @SqlString =@SqlString+ ' where '+ @WhereString;
end --第一次执行得到
if(@TotalRecord is null)
begin
exec sp_executesql @TotalCountSql,N'@TotalRecord int out',@TotalRecord output;
end
----执行主语句
set @SqlString ='select * from ' + @SqlString + ') as t where rowId between ' + ltrim(str(@StartRecord)) + ' and ' + ltrim(str(@EndRecord));
exec(@SqlString)
end try
begin catch
set @ErrorMsg = ERROR_MESSAGE()
end catch
end

declare @total int
declare @msg nvarchar(100)
exec  proc_getpaging
'Ritems,honor','Ritems.*','Ritems.itemname','asc','',2,1,@total output  ,@msg  output
print @total
print @msg

sql 分页rownumber方式的更多相关文章

  1. sql语句分页多种方式ROW_NUMBER()OVER

    sql语句分页多种方式ROW_NUMBER()OVER 摘自: http://www.cnblogs.com/CodingArt/articles/1692468.html 方式一 select to ...

  2. sql语句分页多种方式

    sql语句分页多种方式ROW_NUMBER()OVER sql语句分页多种方式ROW_NUMBER()OVER 2009年12月04日 星期五 14:36 方式一 select top @pageSi ...

  3. vue+ springboot 分页(两种方式:sql分页 & PageHelper 分页)

    方法一:sql分页 思路:使用数据库进行分页   前端使用element-ui的分页组件,往后台传第几页的起始行offest 以及每页多少行pageSize,后台根据起始行数和每页的行数可以算出该页的 ...

  4. sql分页汇总-摘抄自网络

    文章:几种常见SQL分页方式效率比较 个人倾向于:(2005以上版本支持 row_number()) select * from ( select row_number()over(order by ...

  5. SQL分页

    --第一种分页(TOP方式)-- select * from T_Sys_User where User_Id in ( User_Id from T_Sys_User where User_Id n ...

  6. SQL Server SQL分页查询

    SQL Server SQL分页查询的几种方式 目录 0.    序言 1.    TOP…NOT IN… 2.    ROW_NUMBER() 3.    OFFSET…FETCH 4.    执行 ...

  7. sql分页代码

    //三种sql分页语句 SELECT TOP 分页尺寸 * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM Blob ...

  8. SQL点滴16—SQL分页语句总结

    原文:SQL点滴16-SQL分页语句总结 今天对分页语句做一个简单的总结,他们大同小异的,只要理解其中一个其他的就很好理解了. 使用top选项 *from Orders orderid from Or ...

  9. sql分页存储过程比较

    一,先创建一百万条数据 drop table #tmp create table #tmp ( id ,) primary key, name ) ) declare @i int begin ins ...

随机推荐

  1. [WPF自定义控件库] 让Form在加载后自动获得焦点

    原文:[WPF自定义控件库] 让Form在加载后自动获得焦点 1. 需求 加载后让第一个输入框或者焦点是个很基本的功能,典型的如"登录"对话框.一般来说"登录" ...

  2. vc 识别移动硬盘 U盘,本地硬盘

    说明:有时候我们在做设备监控的时候,要识别一些链接设备,在使用函数GetDriveType的时候,U盘可以返回DRIVE_REMOVABLE,而本地硬盘硬盘和移动硬盘DRIVE_FIXED,因此还需要 ...

  3. PostgreSQL问题解决--连接数过多

    I am trying to connect to a Postgresql database, I am getting the following Error: Error:org.postgre ...

  4. CI框架 session 不能读取的问题,PHP7环境

    根本原因在这,libraries/Session/Session.php 中 128行: 如果sessionid的长度不是40的话,每次执行都会 unset($_COOKIE[ci_session]) ...

  5. ubuntu挂载和挂载NTFS分区命令

    1.挂载 首先安装NTFS-3g,不过Ubuntu一般自带: sudo apt install ntfs-3g 查看分区信息: sudo fdisk -l 结果类似: /dev/sda1  *     ...

  6. 组件component

    <!DOCTYPE html> <html lang="zh"> <head> <title></title> < ...

  7. 转:linux下的c/c++开发

    源地址:http://zhidao.baidu.com/question/131261452.html 我就是做LINUX下的C开发的. 准确的说,LINUX下C才是主要的开发语言,但是写应用程序还是 ...

  8. String类的trim() 方法

    用于删除字符串的头尾空白符. 语法:public String trim() 返回值:删除头尾空白符的字符串. public class Test {    public static void ma ...

  9. 《数据结构与算法分析——C语言描述》ADT实现(NO.05) : 散列(Hash)

    散列(Hash)是一种以常数复杂度实现查找功能的数据结构.它将一个关键词Key,通过某种映射(哈希函数)转化成索引值直接定位到相应位置. 实现散列有两个关键,一是哈希函数的选择,二是冲突的处理. 对于 ...

  10. Linux常用技巧

    1.解决不能中文显示 xshell 终端语言显示选择UTF-8 #yum groupinstall chinese-support 2.heredocument报错“unexpected end of ...