博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
古老而又实用的存储过程分页代码
阅读量:5374 次
发布时间:2019-06-15

本文共 2861 字,大约阅读时间需要 9 分钟。

USE [xxxxx]GO/****** Object:  StoredProcedure [dbo].[PROC_DataPaging]    Script Date: 07/12/2012 14:23:06 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE procedure [dbo].[PROC_DataPaging]    @tbName nvarchar(255),            --表名    @tbFields nvarchar(1023),        --返回字段    @OrderField nvarchar(255),        --排序的字段名    @PageSize int,                    --页尺寸    @PageIndex int,                    --页码    @OrderType bit,                    --排序类型,1是升序,0是降序    @strWHERE nvarchar(1023),        --查询条件    @Total int output                --返回总记录数ASDECLARE @strSql nvarchar(1023)        --主语句DECLARE @strOrder nvarchar(255)        --排序DECLARE @strSqlCount nvarchar(511)    --查询记录总数主语句DECLARE @strtemp nvarchar(63)        --排序附加语句--------------排序--------------------1是降序,0未升序IF @OrderType != 0    BEGIN        SET @strtemp  = '>(SELECT MAX('        SET @strOrder = 'ORDER BY ' + @OrderField + ' ASC '    ENDELSE    BEGIN        SET @strtemp  = '<(SELECT MIN('        SET @strOrder = 'ORDER BY '+ @OrderField + ' DESC'    END--------------总记录数---------------IF @strWHERE !=''    BEGIN        SET @strSqlCount = 'SELECT @TotalCout=count(*) FROM ' + @tbName + ' WHERE ' + @strWHERE    ENDELSE    BEGIN        SET @strSqlCount = 'SELECT @TotalCout=count(*) FROM ' + @tbName    END--------------如果是第一页------------IF @PageIndex = 1    BEGIN        IF @strWHERE != ''            BEGIN                SET @strSql = 'SELECT TOP' + str(@PageSize)+ ' ' + @tbFields + ' FROM ' + @tbName +' WHERE ' + @strWHERE + ' ' + @strOrder            END        ELSE            BEGIN                SET @strSql = 'SELECT TOP' + str(@PageSize)+ ' ' + @tbFields + ' FROM ' + @tbName + ' ' + @strOrder            END    END------------第一页之外----------------ELSE    BEGIN        IF @strWHERE != ''            BEGIN                SET @strSql = 'SELECT TOP ' + str(@PageSize) + ' ' + @tbFields                    + ' FROM ' + @tbName + ' WHERE '+ @OrderField +' '                    + @strtemp + ' ' + @OrderField + ') FROM (SELECT TOP'                    + str((@PageIndex-1)*@PageSize) + ' ' + @OrderField + ' FROM ' + @tbName + ' WHERE '                    + @strWHERE + ' ' + @strOrder +') AS tb) AND '+ @strWHERE + ' ' + @strOrder            END        ELSE            BEGIN                SET @strSql = 'SELECT TOP ' + str(@PageSize) + ' ' + @tbFields                    + ' FROM ' + @tbName + ' WHERE ' + @OrderField + ' '                    + @strtemp+ ' ' +@OrderField+ ') FROM (SELECT TOP'                    + str((@PageIndex-1)*@PageSize) + ' '+ @OrderField +' FROM ' + @tbName                    + ' '+ @strOrder +') AS tb)'+ @strOrder            END    ENDexec sp_executesql @strSqlCount, N'@TotalCout int output',@Total outputexec(@strSql)SELECT @strSql AS StrSQLSELECT @strSqlCount AS strSqlCountGO

转载于:https://www.cnblogs.com/matong/archive/2012/07/12/2588037.html

你可能感兴趣的文章
js BOM &&事件
查看>>
NYOJ116 士兵杀敌(二)线段树
查看>>
My Vim配置
查看>>
BI建模原则和常见问题
查看>>
微分几何在机器人领域的应用(一)
查看>>
洛谷P1501 [国家集训队]Tree II
查看>>
软件工程——结对作业(First)
查看>>
浅谈分布式事务原理及其应用场景
查看>>
R语言:读取数据
查看>>
Microsoft .NET Framework 4 安装 1603错误的解决
查看>>
【转载】MySQL调优脚本tuning-primer.sh使用说明
查看>>
剑指offer面试题4-从尾到头打印链表
查看>>
Binary Tree Level Order Traversal
查看>>
Font Awesome的正确简单使用方法
查看>>
使用RT3070使开发板上网
查看>>
VMware 12 专业版永久许可证密钥
查看>>
截断上传原理剖析
查看>>
threadlocal原理及常用应用场景
查看>>
Linux Shell常用脚本整理
查看>>
NSJSONSerialization-JSON数据与NSDictionary和NSArray之间的转化
查看>>