热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mssqlserver存储过程分页

下面分享一个网友写的mssqlserver存储过程分页有需要的朋友可参考参考。

下面分享一个网友写的mssqlserver存储过程分页有需要的朋友可参考参考。

代码如下

USE [BeyondDB]
GO
/****** Object: StoredProcedure [dbo].[Y_Paging] Script Date: 02/22/2013 14:53:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[Y_Paging]
(
@TableName VARCHAR(max)=null, --表名
@FieldList VARCHAR(max)=null, --显示列名,如果是全部字段则为*
@PrimaryKey VARCHAR(max)=null, --单一主键或唯一值键
@Where NVARCHAR(max)=null, --查询条件 不含'where'字符,如id>10 and len(userid)>9
@Order VARCHAR(max)=null, --排序 不含'order by'字符,如id asc,userid desc,必须指定asc或desc


@SortType INT=null, --排序规则 1:正序asc 2:倒序desc 3:多列排序方法
@RecorderCount INT=null, --记录总数 0:会返回总记录
@PageSize INT=null, --每页输出的记录数
@PageIndex INT=null, --当前页数
@Keyword varchar(max)=null, --关键字
@FieldOne varchar(max)=null, --字段1
@FieldTwo varchar(max)=null, --字段2
@TotalCount INT OUTPUT, --记返回总记录
@TotalPageCount INT OUTPUT --返回总页数
)
as
begin

DECLARE @sql NVARCHAR(max);
DECLARE @totalSql NVARCHAR(max);



if(@Keyword is not null and @Keyword !='')
begin
if ISNULL(@FieldOne,'') != ''
set @Order=@Order+' , (case when charindex('''+replace(@Keyword,' ',''','+@FieldOne+')>0 then

1 else 0 end)+(case when charindex(''')+''','+@FieldOne+')>0 then 1 else 0 end) '
if ISNULL(@FieldOne,'') != ''
set @Order=@Order+' , (case when charindex('''+replace(@Keyword,' ',''','+@FieldTwo+')>0 then 1

else 0 end)+(case when charindex(''')+''','+@FieldTwo+')>0 then 1 else 0 end) '
end

if(@SortType is not null and @SortType=1)
set @Order=@Order+' asc '
if(@SortType is not null and @SortType=2)
set @Order=@Order+' desc '

SET @sql = ' WITH LIST AS
(
SELECT ' + @FieldList + ',ROW_NUMBER() OVER (ORDER BY ' + @Order + ') as RowNumber
FROM ' + @TableName + '
WHERE 1=1 ' + @Where + '

)
SELECT * FROM LIST WHERE RowNumber BETWEEN ' + STR(@PageIndex+1) + ' AND ' + STR

(@PageIndex + @PageSize)

set @totalSql = ' SELECT @TOTALCOUNT=COUNT(*) FROM ' + @TableName + ' WHERE 1=1 ' + @Where

print(@Sql)
EXEC(@Sql)
--EXEC sp_executesql @totalSql,N'
-- @ID uniqueidentifier,
-- @StatusList varchar(max),
-- @BeginTime datetime,
-- @EndTime datetime,
-- @TitleOrNo varchar(max),
-- @Excutor uniqueidentifier,
-- @Assignor uniqueidentifier,
-- @TotalCount int output
-- ',
-- @ID ,
-- @StatusList ,
-- @BeginTime ,
-- @EndTime ,
-- @TitleOrNo ,
-- @Excutor,
-- @Assignor,
-- @TotalCount output
end

--调用实例
USE [BeyondDB]
GO

DECLARE @return_value int,
@TotalCount int,
@TotalPageCount int

EXEC @return_value = [dbo].[Y_Paging]
@TableName = N'Account',
@FieldList = N'*',
@PrimaryKey = N'id',
@Where = N' and 1=1',
@Order = N' CreateTime ',
@SortType =2,
@PageSize = 5,
@PageIndex = 0,
@RecorderCount = null,
@Keyword = N'1',
@FieldOne= N'Accountname',
@FieldTwo = N'accountid',
@TotalCount = @TotalCount OUTPUT,
@TotalPageCount = @TotalPageCount OUTPUT

SELECT @TotalCount as N'@TotalCount',
@TotalPageCount as N'@TotalPageCount'

SELECT 'Return Value' = @return_value

GO


推荐阅读
  • 2023年1月28日网络安全热点
    涵盖最新的网络安全动态,包括OpenSSH和WordPress的安全更新、VirtualBox提权漏洞、以及谷歌推出的新证书验证机制等内容。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • 本文档提供了在Windows 10操作系统中安装Python 3及Scrapy框架的完整指南,包括必要的依赖库如wheel、lxml、pyOpenSSL、Twisted和pywin32的安装方法。 ... [详细]
  • 本文介绍了一种在 Android 开发中动态修改 strings.xml 文件中字符串值的有效方法。通过使用占位符,开发者可以在运行时根据需要填充具体的值,从而提高应用的灵活性和可维护性。 ... [详细]
  • 初探Hadoop:第一章概览
    本文深入探讨了《Hadoop》第一章的内容,重点介绍了Hadoop的基本概念及其如何解决大数据处理中的关键挑战。 ... [详细]
  • 解决Expo XDE 2.22.1版本启动错误
    根据问题描述,用户在将Expo升级至2.22.1版本后,在尝试打开项目时遇到了错误。本文提供了详细的错误分析及解决方案。 ... [详细]
  • 探索CNN的可视化技术
    神经网络的可视化在理论学习与实践应用中扮演着至关重要的角色。本文深入探讨了三种有效的CNN(卷积神经网络)可视化方法,旨在帮助读者更好地理解和优化模型。 ... [详细]
  • 我整理了HMOV四大5G旗舰的参数,可依然没能拯救我的选择困难症
    伊瓢茕茕发自凹非寺量子位报道|公众号QbitAI报道了那么多发布会,依然无法选出要换的第一部5G手机。这不,随着华为P40系列发布,目前国 ... [详细]
  • PHP 图形函数中实现汉字显示的方法
    本文详细介绍了如何在 PHP 的图形函数中正确显示汉字,包括具体的步骤和注意事项,适合初学者和有一定基础的开发者阅读。 ... [详细]
  • UVa 11683: 激光雕刻技术解析
    自1958年发明以来,激光技术已在众多领域得到广泛应用,包括电子设备、医疗手术工具、武器等。本文将探讨如何使用激光技术进行材料雕刻,并通过编程解决一个具体的激光雕刻问题。 ... [详细]
  • Docker基础入门与环境配置指南
    本文介绍了Docker——一款用Go语言编写的开源应用程序容器引擎。通过Docker,用户能够将应用及其依赖打包进容器内,实现高效、轻量级的虚拟化。容器之间采用沙箱机制,确保彼此隔离且资源消耗低。 ... [详细]
  • 1,滤波流程2,图像的金字塔分解(拉普拉斯金字塔)3,金字塔傅里叶频率组合滤波(本文完ÿ ... [详细]
  • 在学习了Splay树的基本查找功能后,可能会觉得它与普通的二叉查找树没有太大的区别,仅仅是通过splay操作减少了时间开销。然而,Splay树之所以被誉为“序列之王”,主要在于其强大的区间操作能力。 ... [详细]
  • 本文探讨了如何选择一个合适的序列化版本ID(serialVersionUID),包括使用生成器还是简单的整数,以及在不同情况下应如何处理序列化版本ID。 ... [详细]
  • 如何使用Maven将依赖插件一并打包进JAR文件
    本文详细介绍了在使用Maven构建项目时,如何将所需的依赖插件一同打包进最终的JAR文件中,以避免手动部署依赖库的麻烦。 ... [详细]
author-avatar
LUO程嘉嘉_625
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有