SQL 存储过程 分页查询

ALTER PROCEDURE [dbo].[gzProc_TablePage]
@tablename varchar(MAX),--表名
@selcolumn varchar(MAX),--查询字段
@where varchar(MAX),--where条件
@sortcolumn varchar(MAX),--排序字段
@pagecount int,--每页记录数
@pageindex int--页号
AS
BEGIN
/***************************************************
-- 功能:分页查询
-- 作者:GarsonZhang
-- 时间:2016年3月21日10:19:07
-- 备注:
-- 测试:
***************************************************/
declare @beginrow int
declare @endrow int

set @beginrow=0
set @endrow=0

set @beginrow=(@pageindex-1)*@pagecount+1
set @[email protected]*@pagecount

declare @sqlstr VARCHAR(MAX)

set @sqlstr=‘with table1 as(select ‘+ @selcolumn +‘,ROW_NUMBER() OVER(ORDER BY ‘+ @sortcolumn+‘ ) AS ROW‘+
‘ FROM ‘[email protected]+‘ WHERE ‘[email protected]+‘) ‘+‘ SELECT ‘[email protected]+‘ FROM TABLE1 WHERE ROW BETWEEN ‘+cast(@beginrow as nvarchar )+‘ and ‘+cast(@endrow as nvarchar)

PRINT @sqlstr

--set @[email protected] +‘ SELECT ‘+ @selcolumn +‘ FROM TABLE1 WHERE ROW BETWEEN ‘+cast(@beginrow as nvarchar )+‘ and ‘+cast(@endrow as nvarchar)
--set @[email protected] +‘ SELECT ‘[email protected]+‘ FROM TABLE1 WHERE ROW BETWEEN ‘+cast(@beginrow as nvarchar )+‘ and ‘+cast(@endrow as nvarchar)

--PRINT @sqlstr
exec(@sqlstr)
END

时间: 2024-10-12 09:18:50

SQL 存储过程 分页查询的相关文章

SQL存储过程分页查询--只支持MSSQL2005及以上

USE [QSM] GO /****** Object: StoredProcedure [dbo].[UP_SysGetListByPage] Script Date: 04/12/2017 17:47:02 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <Author,,Name> -- Create d

SQL 存储过程 分页

set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go -- ============================================= -- Author: *** -- Create date: 2014-03-27 20:00 -- Description: 采用最新的 row_number() over 技术高效分页方法 -- ============================================= ALTER PRO

SQL存储过程分页(通用的拼接SQL语句思路实现)

多表通用的SQL存储过程分页 USE [EmailCenter] GO /****** Object: StoredProcedure [dbo].[Common_PageList] Script Date: 2016/2/29 11:00:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROC [dbo].[Common_PageList] ( @tab nvarchar(200),---表名 @strFl

[.NET] SQL数据分页查询

[.NET] SQL数据分页查询 程序下载 范例下载:点此下载 原始码下载:点此下载 NuGet封装:点此下载 数据查询 开发系统时,使用C#执行SQL查询指令,就可以从SQL数据库里查询所需数据. SELECT Id, Name FROM Users 数据分页查询 当数据量过多时,系统会需要采用分页的方式来分批取得数据.这时可以改写原有的SQL查询指令,在其中加入ROW_NUMBER(),来为每笔资料打上编号.后续依照系统需求,取得某个编号范围内的数据,就完成在系统中提供数据分页查询的功能.(

动态sql实现分页查询

1.创建实体类对象需要查询的条件com.rl.ecps.model.QueryCondition private Long brandId; private Short auditStatus; private Short showStatus; private String itemName; private Integer pageNo; private Integer startNum; private Integer endNum; 2.查询语句 查询条数: <select id="

SQL Server 分页查询存储过程

1.低效的分页 SELECT TOP m-n+1 * FROM publish WHERE (id NOT IN (SELECT TOP n-1 id FROM publish)) 但这个存储过程有一个致命的缺点,就是它含有NOT IN字样.虽然我可以把它改造为: SELECT TOP 页大小 * FROM Table1 WHERE not exists (select * from (select top (页大小*页数) * from table1 order by id) b where

sql server分页查询

1.引言 在列表查询时由于数据量非常多,一次性查出来会非常慢,就算一次查出来了,也不能一次性显示给客户端,所以要把数据进行分批查询出来,每页显示一定量的数据,这就是数据要分页. 2.常用的数据分页方法 我们经常会碰到要取n到m条记录,就是有分页思想,下面罗列一下一般的方法. 我本地的一张表 tbl_FlightsDetail,有300多W记录,主键 FlightsDetailID(Guid),要求按照FlightsDetailID排序 取 3000001 到3000010 之间的10条记录,也是

sql主表分页查询关联子表取任意一条高效方案

有个业务场景,主表中一条数据,在子表中有多条详情数据.对数据进行展示的时候,产品希望随意拿一条子表的数据关联展示出来,用了很多方案,但是都不够好. sql查询取子表任意一条,多个字段的方案 最终找到一个高效的方案记录如下: 需求如图: 最早的第一套方案: select distinct A.ID, A.Title, A.[Description], A.xx1, A.xx2, A.xx3, B.ID as BId, B.xxA, B.xxB, B.xxC, B.xxD from A left j

SQL SERVER 分页查询 和 Inser 添加并返回Id

--第一种分页 SELECT * FROM ( select ROW_NUMBER() over(order by id) as rows,* from [dbo].[M_User] --WHERE Id>1 ) AS T where rows BETWEEN 0 AND 2 --第二种分页 需SQL SERVER 2012以上支持 select * from [M_Role] order by Id offset 0 rows fetch next 10 rows only ; --执行Ins