Sqlserver分页脚本收集

本文介绍了一个用于SQL Server的分页存储过程实现方法。该存储过程通过使用ROW_NUMBER()窗口函数来实现灵活的分页查询,并支持根据指定字段进行升序或降序排序。此外,还提供了是否返回记录总数的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

select t.*
from (
select t.*
from (
select *,row_number() over (Order by nav desc) as pos
from F_FundNav
) t
where t.pos <=200
) t
where t.pos >=101

-----Create Procedure for Sqlserver 分页存储过程
-----修改他人存储过程
-----2007_12-25
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[sp_Pro_TestPage]
@tblName varchar(255), -- 表名
@fldName varchar(255), -- 字段名
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@IsCount bit=0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(3000) ='', -- 查询条件 (注意: 不要加 where)
@StartIndex varchar(255),
@maxRows varchar(255)
AS
declare @strSQL varchar(3000) -- 主语句
declare @strCount varchar(3000) -- 返回数据的总条数语句
declare @strOrder varchar(3000) -- 排序类型语句
BEGIN
if @OrderType != 0
set @strOrder ='Order by'+@fldName+' desc'
else
set @strOrder = 'Order by ' + @fldName + ' asc'
END
set @strSQL = 'select t.* from (select t.* from (select *,row_number() over ('+ @strOrder +') as pos from ' + @tblName + ') t where t.pos <= ('+ @maxRows +')) t where t.pos >= '+@StartIndex
set @strCount = 'select count(0) Total from '+@tblName
BEGIN
if @strWhere != ''
set @strSQL = 'select t.* from (select t.* from (select *,row_number() over ('+ @strOrder +') as pos from ' + @tblName + 'where '+@strWhere+') t where t.pos <= ('+ @maxRows +')) t where t.pos >= '+@StartIndex
set @strCount = 'select count(0) Total from '+@tblName + 'where '+ @strWhere
END;
BEGIN
if @IsCount != 0 ----按需返回所需要的总数
exec (@strCount)
END;

exec (@strSQl)
GO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值