博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分页存储过程
阅读量:4135 次
发布时间:2019-05-25

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

1,

------------------------------------
--用途:支持任意排序的分页存储过程
--说明:
------------------------------------

CREATE PROCEDURE [dbo].[UP_GetRecordByPageOrder]

@tblName varchar(255),   -- 表名
@fldName varchar(255),   -- 显示字段名
@OrderfldName varchar(255), -- 排序字段名
@StatfldName varchar(255), -- 统计字段名
@PageSize int = 10,   -- 页尺寸
@PageIndex int = 1,   -- 页码
@IsReCount bit = 0,   -- 返回记录总数, 非 0 值则返回
@OrderType bit = 0,   -- 设置排序类型, 非 0 值则降序
@strWhere varchar(1000) = '' -- 查询条件 (注意: 不要加 where)
AS

declare @strSQL varchar(6000) -- 主语句

declare @strTmp varchar(100)   -- 临时变量(查询条件过长时可能会出错,可修改100为1000)
declare @strOrder varchar(400) -- 排序类型

if @OrderType != 0

begin
set @strTmp = '<(select min'
set @strOrder = ' order by [' + @OrderfldName +'] desc'
end
else
begin
set @strTmp = '>(select max'
set @strOrder = ' order by [' + @OrderfldName +'] asc'
end

set @strSQL = 'select top ' + str(@PageSize) + ' ' + @fldName + ' from ['

+ @tblName + '] where [' + @OrderfldName + ']' + @strTmp + '(['
+ @OrderfldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @OrderfldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)'
+ @strOrder

if @strWhere != ''

set @strSQL = 'select top ' + str(@PageSize) + ' ' + @fldName + ' from ['
+ @tblName + '] where [' + @OrderfldName + ']' + @strTmp + '(['
+ @OrderfldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @OrderfldName + '] from [' + @tblName + '] where ' + @strWhere + ' '
+ @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder

if @PageIndex = 1

begin
set @strTmp = ''
if @strWhere != ''
set @strTmp = ' where ' + @strWhere

set @strSQL = 'select top ' + str(@PageSize) + ' ' + @fldName + ' from ['

+ @tblName + ']' + @strTmp + ' ' + @strOrder
end

if @IsReCount != 0
set @strSQL = @strSQL+' select count(1) as Total from [' + @tblName + ']'

if @strWhere!=''

set @strSQL = @strSQL+' where ' + @strWhere
exec (@strSQL)
2,
------------------------------------
--用途:分页存储过程(对有主键的表效率极高)
--说明:
------------------------------------

CREATE PROCEDURE [dbo].[UP_GetRecordByPage]

    @tblName      varchar(255),       -- 表名
    @fldName      varchar(255),       -- 主键字段名
    @PageSize     int = 10,           -- 页尺寸
    @PageIndex    int = 1,            -- 页码
    @IsReCount    bit = 0,            -- 返回记录总数, 非 0 值则返回
    @OrderType    bit = 0,            -- 设置排序类型, 非 0 值则降序
    @strWhere     varchar(1000) = '' -- 查询条件 (注意: 不要加 where)
AS

declare @strSQL   varchar(6000)       -- 主语句

declare @strTmp   varchar(100)        -- 临时变量(查询条件过长时可能会出错,可修改100为1000)
declare @strOrder varchar(400)        -- 排序类型

if @OrderType != 0

begin
    set @strTmp = '<(select min'
    set @strOrder = ' order by [' + @fldName +'] desc'
end
else
begin
    set @strTmp = '>(select max'
    set @strOrder = ' order by [' + @fldName +'] asc'
end

set @strSQL = 'select top ' + str(@PageSize) + ' * from ['

    + @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
    + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
    + @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)'
    + @strOrder

if @strWhere != ''

    set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
        + @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
        + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
        + @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' '
        + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder

if @PageIndex = 1

begin
    set @strTmp =''
    if @strWhere != ''
        set @strTmp = ' where ' + @strWhere

    set @strSQL = 'select top ' + str(@PageSize) + ' * from ['

        + @tblName + ']' + @strTmp + ' ' + @strOrder
end

if @IsReCount != 0

    set @strSQL = 'select count(*) as Total from [' + @tblName + ']'+' where ' + @strWhere

exec (@strSQL)

转载地址:http://gvpvi.baihongyu.com/

你可能感兴趣的文章
淡淡Cookie存取和IE页面缓存的问题
查看>>
XML中特殊字符的处理
查看>>
ping命令查看对方操作系统
查看>>
解决ssh中文乱码
查看>>
ubuntu下nutch-1.0的安装和配置错误排除
查看>>
Eclipse中program arguments 与 VM arguments的区别
查看>>
Nutch“java.lang.NoClassDefFoundError:”问题解决
查看>>
nutch "Job failed!" 问题解决
查看>>
解决nutch搜不到结果
查看>>
从零开始搭建nutch搜索引擎
查看>>
C++默认参数
查看>>
正则表达式中有用但很少用的语法
查看>>
Vim 的 XML 文档编辑插件——xml.vim
查看>>
vim帮助文档无法跳转的问题
查看>>
vim常用快捷键及设置
查看>>
数据挖掘十大经典算法(6) PageRank
查看>>
数据挖掘十大经典算法(7) AdaBoost
查看>>
数据挖掘十大经典算法(9) 朴素贝叶斯分类器 Naive Bayes
查看>>
数据挖掘十大经典算法(10) CART: 分类与回归树
查看>>
初探数据挖掘中的十大经典算法
查看>>