您的位置:首页 > 数据库

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: