sql分页存储过程
ALTER PROCEDURE [dbo].[P_SplitPagesQuery]
@TablesName NVARCHAR(MAX),--表名或视图名(只能传单一表名)
@PK NVARCHAR(MAX)='',--主键(可以为空!)
@StrSort NVARCHAR(MAX)='',--排序字段(按照这个字段对查询结果进行排序),不能为空 @SortType INT =0,--排序方式,默认为0(升序),1为降序
@StrWhere NVARCHAR(MAX)='',--查询条件(即sql语句中的where后面部分)
@Fields NVARCHAR(MAX)='*',--读取字段(呈现出来的字段)
@PageCurrent INT =1,--当前页码,默认为1
@PageSize INT =10,--页面大小,默认为10
@PageCount INT OUTPUT,--总页数(按照页面大小一共分了多少页)
@RecordCount INT OUTPUT--查询结果的总条数 AS /* 返回值说明:查询结果(表) */
DECLARE @SqlStr nvarchar(4000)
IF @StrWhere IS NOT NULL AND @StrWhere != ''
BEGIN
SET @StrWhere = ' WHERE ' + @StrWhere + ' '
END
ELSE
BEGIN
SET @StrWhere = ''
END
BEGIN IF @StrSort = ''
IF @PK IS NOT NULL AND @PK!=''
SET @StrSort = @PK
IF @PageCurrent < 1
SET @PageCurrent = 1
IF @SortType = 1 AND @StrSort!=''
SET @StrSort = @StrSort + ' DESC '
IF @SortType = 0 AND @StrSort!=''
SET @StrSort = @StrSort + ' ASC '
IF @PageCurrent = 1 --第一页提高性能
BEGIN
SET @SqlStr = 'SELECT TOP ' + str(@PageSize) +' '+@Fields+ ' FROM ' + @TablesName + ' AS tb ' + @StrWhere
IF @StrSort!=''
SET @SqlStr = @SqlStr + ' ORDER BY '+ @StrSort
END
ELSE
BEGIN
DECLARE @StartPos NVARCHAR(50)
DECLARE @EndPos NVARCHAR(50)
SET @StartPos = CONVERT(NVARCHAR(50),(@PageCurrent - 1) * @PageSize + 1)
SET @EndPos = CONVERT(NVARCHAR(50),@PageCurrent * @PageSize)
SET @SqlStr = ' SELECT '+@Fields+ ' FROM (SELECT ROW_NUMBER() OVER(ORDER BY '+@StrSort+') AS RowNum , tb.* '+' FROM '+@TablesName+' AS tb '+@StrWhere+') AS D WHERE RowNum BETWEEN '+@StartPos+' AND ' +@EndPos
IF @StrSort!=''
SET @SqlStr = @SqlStr + ' ORDER BY '+ @StrSort
END
END
print @SqlStr EXEC(@SqlStr)
DECLARE @SqlCount NVARCHAR(4000)
SET @SqlCount = 'SELECT @RecordCount=COUNT(*),@PageCount=CEILING((COUNT(*)+0.0)/' + CAST(@PageSize AS VARCHAR)+') FROM ' + @TablesName + @StrWhere
sql分页存储过程的更多相关文章
- [转]关于SQL分页存储过程的分析
[转]关于SQL分页存储过程的分析 建立一个 Web 应用,分页浏览功能必不可少.这个问题是数据库处理中十分常见的问题.经典的数据分页方法是:ADO 纪录集分页法,也就是利用ADO自带的分页功能(利用 ...
- Delphi调用SQL分页存储过程实例
Delphi调用SQL分页存储过程实例 (-- ::)转载▼ 标签: it 分类: Delphi相关 //-----下面是一个支持任意表的 SQL SERVER2000分页存储过程 //----分页存 ...
- 完整SQL分页存储过程(支持多表联接)
http://www.cnblogs.com/andiki/archive/2009/03/24/1420289.html Code/********************************* ...
- 真正通用的SQL分页存储过程
关于SQL分页的问题,网上找到的一些SQL其实不能真正做到通用,他们主要是以自增长ID做为前提的.但在实际使用中,很多表不是自增长的,而且主键也不止一个字段,其实我们稍做改进就可以达到通用.这里还增加 ...
- 关于SQL分页存储过程的分析
建 立一个 Web 应用,分页浏览功能必不可少.这个问题是数据库处理中十分常见的问题.经典的数据分页方法是:ADO 纪录集分页法,也就是利用ADO自带的分页功能(利用游标)来实现分页.但这种分页方法仅 ...
- SQL - 分页存储过程
http://www.jb51.net/article/71193.htm http://www.webdiyer.com/utils/spgenerator/ create PROCEDURE [d ...
- 修改后的SQL分页存储过程,利用2分法,支持排序
/****** Object: StoredProcedure [dbo].[sys_Page_v3] Script Date: 08/13/2014 09:32:28 ******/ SET ANS ...
- sql分页存储过程比较
一,先创建一百万条数据 drop table #tmp create table #tmp ( id ,) primary key, name ) ) declare @i int begin ins ...
- MS SQL 分页存储过程
最近换了家新公司,但是新公司没有使用分页的存储过程.那我就自个写一个往项目上套 (效率怎么样就不怎么清楚没有详细的测试过) CREATE PROCEDURE [dbo].[pro_common_pag ...
- sql分页存储过程,带求和、排序
创建存储过程: CREATE PROCEDURE [dbo].[sp_TBTest_Query] ( @PageSize INT, --每页多少条记录 @PageIndex INT = 1, --指定 ...
随机推荐
- SQL Server 2016 需要单独安装SSMS
默认安装完 MSSQL 后,不自带 SSMS 的管理工具了,需要的话可以单独安装,貌似更专业了一些. https://msdn.microsoft.com/library/mt238290.aspx ...
- C#3.0新特性之扩展方法介绍
C#3.0扩展方法是给现有类型添加一个方法.现在类型即可是基本数据类型(如int,String等),也可以是自己定义的类.以下是引用片段: //Demo--1 //扩展基本类型 namespace T ...
- AX3空Invoice明细问题
用户反映出现invoice无法打印明细问题,看截图 考虑再三,去查看invoice ID,居然出现类似ABABAB\的字符,就是最后一个\有问题, 修改VendInvoiceJour,VendInvo ...
- ux.form.field.KindEditor 所见所得编辑器
注意需要引入KindEditor相关资源 //所见所得编辑器 Ext.define('ux.form.field.KindEditor', { extend: 'Ext.form.field.Text ...
- 移动端使用HTML5表单增强体验
我们知道,HTML5新增了许多表单类型,如: number,email,url,tel,datetime,month,datetime-local等等,像datetime,month这些非常方便,免得 ...
- php XML 读写 创建
一 .XML 读 1.1. 首先同目录定义好一个XML文件 : book.xml <?xml version="1.0" encoding="utf-8" ...
- python高效解析日志入库
python脚本解析日志文件入库一般有三个重要的步骤:读文件.解析文件.入库.在这三个方面下功夫,可确保我们获得最优的性能(这里不讨论并发) 1 读文件:一次读一行,磁盘IO太多,效率低下:一次性读如 ...
- Unit Of Work--工作单元(一)
简介 最近忙着新项目的架构,已经有一段时间没有更新博客了,一直考虑着要写些什么,直到有一天跟朋友谈起他们公司开发数据层遇到的一些问题时,我想应该分享一些项目中使用的数据访问模式. 虽然最近一直都在使用 ...
- Java知多少(105)套接字(Socket)
网络应用模式主要有: 主机/终端模式:集中计算,集中管理: 客户机/服务器(Client/Server,简称C/S)模式:分布计算,分布管理: 浏览器/服务器模式:利用Internet跨平台. www ...
- IIS6.0下 Asp.Net 拦截jpg请求
之前用mvc写了一个接口,访问格式 http://ip:port/{id}-{type}.jpg来获取一个图片,在IIS7.0+运行毫无障碍,但是在IIS6.0下,直接提示文件不存在或者已删除. 经过 ...