pagerprocedureforsqlserver
2008-04-27 08:31
239 查看
SETQUOTED_IDENTIFIERONGOSETANSI_NULLSONGOALTERproceduredbo.pager(@page_numint=1,@item_countint=0,@query_suffixnvarchar(4000),@query_fieldsnvarchar(4000)='*',@query_keynvarchar(4000),@record_countint=nulloutput)/********************************************************************************文件:pager.sql**名称:pager****参数:@page_num页码,起始页码为1,默认页码为1。**@item_count每页显示的记录条数,默认显示0条。0条表示取出所有数据。**@query_suffix查询后缀,即from后的所有语句。**@query_fields需要查询的字段,默认为所有字段'*'。**@query_key查询主键**@record_count纪录总数,当参数为null的时候,不执行汇总操作。该参数暂未生效。****描述:分页器。**取出指定区间的查询。**使用须知:**1查询必须显式指定排序方式。**2query_key必须在query_fields中出现。**3query_key应该是个不允许为空,且不重复的字段。**示例:**用该函数取出**selecta.id,a.name,b.school_namefromusera,schoolbwherea.school_id=b.idorderbya.iddesc**第二页的数据,每页显示10条纪录**execpager@page_num=2,@item_count=10,@query_suffix='usera,schoolbwherea.school_id=b.idorderbya.iddesc',@query_fields='a.id,a.name,b.school_name',@query_key='a.id'****要取出所有纪录**execpager@query_suffix='usera,schoolbwherea.school_id=b.idorderbya.iddesc',@query_fields='a.id,a.name,b.school_name',@query_key='a.id'****创建:whxbb@20030108**修改:******返回:成功0失败错误代号.*******************************************************************************/As--查询语句declare@querynvarchar(4000)declare@query_startnvarchar(4000)declare@query_endvarchar(4000)--错误号declare@error_codeint--起始记录号declare@begin_noint--结束记录号declare@end_nointset@query_suffix='from'+@query_suffixif(@item_count=0)beginset@query='select'+@query_fields+''+@query_suffixendelseif(@page_num=1)begin--第一页,直接使用topn取值set@query='selecttop'+cast(@item_countasnvarchar(10))+''+@query_fields+''+@query_suffixendelse--不是第一页begin--上页的最后一个纪录号set@begin_no=(@page_num-1)*@item_count--本页的最后一个纪录号set@end_no=@begin_no+@item_count--构建分页查询语句set@query_start='selecttop'+cast(@end_noasnvarchar(10))+''+@query_fieldsset@query_start=@query_start+'from('+@query_start+''+@query_suffix+')asquery_tablewhere'set@query_end='selecttop'+cast(@begin_noasnvarchar(10))+''+@query_key+''+@query_suffixset@query=@query_start+''+@query_key+'notin('+@query_end+')'endprint'Queryconstructed:'+@query--执行分页查询语句exec(@query)set@error_code=@@errorif@error_code<>0gotoerror_handleif(@record_countisnotnull)begin--统计结果总数--创建一个临时存储过程用于带出构建查询语句的结果set@query='createprocedure#tmp_procedure_pager_count(@countintoutput)asselecttop100percent'+@query_k1
相关文章推荐
- pager procedure for sql server
- pager procedure for sql server
- SQLSERVER Pager store procedure
- Microsoft SQL Server 2008 All-in-One Desk Reference For Dummies 读书笔记之六
- SQL Error (2013): Lost connection to MySQL server at 'waiting for initial communication packet', sys
- 报表项目控件Nevron Gauge for SQL Server Reporting Services
- Microsoft SQL Server及SQL Server 2000 Driver for JDBC安装与配置
- This article provides a fix for the error: Login failed for user “. The user is not associated with a trusted SQL Server
- 微软的PHP连接SQL Server数据库 (Microsoft Drivers for PHP for SQL Server )
- SQL Watch for SQL Server Trial from Quest Software
- Archive for required library: 'D:/maven/repository/com/microsoft/sqlserver/sqljdbc4/4.0/sqljdbc4-4.0
- sqlserver for xml
- 灵活运用 SQL SERVER FOR XML PATH
- java 连接SQLServer No suitable driver found for jdbc
- Microsoft ODBC Driver 11 for SQL Server on Ubuntu
- The Database Diagrams solution for SQL Server 2008
- 星外虚拟主机管理平台 开通数据库 出现Microsoft OLE DB Provider for SQL Server 错误 '8004' 从字符串向 datetime 转换失败
- Microsoft SQL Server 2008 All-in-One Desk Reference For Dummies
- Microsoft SQL Server 2000 Driver for JDBC在MyEclipse中的使用方法
- sqlserver FOR XML PATH 语句的应用