一个利用sql 语句来实现分页的存储过程

最近一直在研究存储过程和函数,感觉这趟水有点浑,所以我决定要趟这趟浑水。

一些是一个sql server的分页存储过程,可以结合页面设计来进行理解
假设场景有,上一页 下一页两个按钮,排序方式悬着下拉框一个,当前页数文本框一个,每页显示记录数文本框一个,
好 ,好戏上演:

CREATE PROCEDURE dbo. Fen Ye
(
@Page int,//当前页数
@RecsPerPage int,//每页显示记录数
@Sort VARCHAR(255)//排序方式
)
AS

DECLARE @SQL nVARCHAR(4000)

SET @SQL='SELECT TOP '+CAST(@RecsPerPage AS VARCHAR(20))+' * FROM Customers A WHERE A.ID NOT IN 

(SELECT TOP '+CAST((@RecsPerPage*(@Page-1)) AS VARCHAR(20))+' ID FROM Customers B ORDER BY ID '+ @Sort +') ORDER BY ID '+ @Sort 

//此方法借鉴了博客园某位老兄的方法 在此也感谢他的分享

//此处将top后面只能跟常量

//我在写的时候 SELECT TOP 10*(2-1) FROM Customers 这句怎么都不能通过,最后查了查说的是top后面只能跟常量
//所以我就将SQL语句写成了上面的形式,将变量进行拼接

EXEC sp_ExecuteSql @SQL

SELECT @Page AS Page
RETURN @Page

GO
//此处返回的@Page可以用于上一页 下一页的操作,返回的@Page可以方便的用于翻页功能,使用于winform和web开发

//此存储过程还可以进一步扩展,可以将多个表关联查询将查询结果写入临时表,再对临时表进行分页操作。

//如有疑问请留言

posted @   大侠酷裤马路  阅读(313)  评论(1编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
点击右上角即可分享
微信分享提示