惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
爱范儿
爱范儿
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园_首页
博客园 - 叶小钗
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
云风的 BLOG
云风的 BLOG
量子位
博客园 - 三生石上(FineUI控件)
Stack Overflow Blog
Stack Overflow Blog
小众软件
小众软件
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
V2EX
人人都是产品经理
人人都是产品经理
V
Visual Studio Blog
Jina AI
Jina AI
L
LangChain Blog
M
MIT News - Artificial intelligence
MongoDB | Blog
MongoDB | Blog
Last Week in AI
Last Week in AI
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学

博客园 - zjy

ligerui.grid.extend.rowSpan 用户中心 - 博客园 用户中心 - 博客园 OnClientClick 防SQL注入 用户中心 - 博客园 [CS0030错误]奇怪:难不成ChangePassword也是系统用名? DataTable中统计列中不同行问题 推荐个C#不错的开发工具(新版本SharpDevelop) 安装IE7 Visual Studio出现调试不够权限的解决办法 求助:UltraWebGrid当用xml paging(ajax)时,如何取其子表的band的index或者子表行信息?(NetAdvantage) 解决UltraWebGrid分页时出现的脚本错误(Infragistics的Bug) 解决infragistics的webgrid嵌套子表列名在ajax下(xml paging)出现的乱码问题 修改上传文件控件样式并实现上传文件功能 用页传值方式解决模态窗口的Response.WriteFile文件下载 DataTable添加列时容易被忽略的问题! 重构oninit,应用在模式窗口的方法 获取一个星期时间段的具体日期 Web导出Word需要添加头文件 - zjy - 博客园
从通用分页存储过程[ROWCOUNT方式]抽出适合自己需求的分页过程
zjy · 2008-05-20 · via 博客园 - zjy

     通用分页存储过程很实用,但毕竟不是全适用于一些环境,譬如我遇到过一种情况,需要先外链两个表,然后再关联几个表,总之参数传递很烦人,这里不细说了,现在只谈实现查询后,怎么分页的简单技巧
1,建立用户函数
CREATE   function   F_xxxx(@ID  nvarchar(36),@Key nvarchar(36),......)
{
......//这里查询出你需要分页的所有数据,可以带参数来查询
}
建函数的目的是为了整合查询的数据,主要是可以带入参数,很方便.
注,函数中没有exec语句,不可以拼接SQL,不过可以调用存储过程.
2,建分页存储过程,具体框架和说明如下

/*080520  by zjyaoo@live.cn*/  
CREATE PROCEDURE dbo.SPCustomPaging
    (
    
@PageSize int =15--页面大小
    @PageNumber int =1--页码
    @传入到函数的参数1 nvarchar(36), --传入到函数的参数,这里参数个数根据建的函数来决定
    @传入到函数的参数2 nvarchar(36), --传入到函数的参数,这里参数个数根据建的函数来决定
    @StrWhere nvarchar(2000)=' AND 1=1' , --条件,注:传入的@StrWhere需要replace.(''','''')处理
    @RecordCount int =0  output  --返回总的条数
    )
AS
DECLARE @strStartRow int
IF @PageNumber < 1
    
SET @PageNumber = 1
SET @strStartRow =(@PageNumber - 1)* @PageSize + 1  --设置其实页码
--
--
DECLARE @str_Count_SQL nvarchar(500
SET @str_Count_SQL= 'SELECT @TotalCount=count(*) FROM  [F_建立的的函数]('''+@函数参数1+''','''+@函数参数2+''') Where 1=1 '  + @StrWhere  --1=1,用于外接条件
EXEC sp_executesql @str_Count_SQL,N'@TotalCount int=0 output',@RecordCount output  --获取总的条数
Declare @Sql nvarchar(1000)
set @Sql =
'DECLARE  @SortColumn  nvarchar(255)  --建几个临时变量
DECLARE  @SortNullValue  nvarchar(255) 
DECLARE  @PKStartValue  nvarchar(255)  
SET @SortNullValue = CAST(
'''' as int)
SET ROWCOUNT  
'+  cast(@strStartRow   as  nvarchar(5))  +'   --整数转为字符
SELECT @SortColumn= isNull([函数中的分类字段] ,@SortNullValue), @PKStartValue = [函数中的关键字段]    FROM   [F_建立的的函数](
'''+@函数参数1+''','''+@函数参数2+''')   Where 1=1   '+@StrWhere +'  ORDER BY [函数中的分类字段], [再加个函数中的关键字段] Desc 
SET ROWCOUNT   
'+ cast(@PageSize   as  nvarchar(5)) +'    --整数转为字符
SELECT * FROM  F_ManufacturerDiscount(
'''+@OrgID+'''
 WHERE  (isNull([函数中的分类字段],@SortNullValue)>@SortColumn or (isNull([函数中的分类字段],@SortNullValue)=@SortColumn and [函数中的关键字段]<=@PKStartValue))  
'+@StrWhere +'  ORDER BY [函数中的分类字段],[函数中的关键字段] Desc
RETURN
'
Exec (@Sql)
GO