资源描述:
《分页存储过程(二):分页获得多表连接查询的数据-(未验证).docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、分页存储过程(二):分页获得多表连接查询的数据(未验证)---------------------------------------------------------------------------名称(Name):GetRecordFromTableWithSimpleJoinByPage--功能(Function):分页获得多表连接查询的数据--书写者(Author):--日期(Date):2006年02月15日--输入参数:/*@tblNamenvarchar(255),--表名@priKeyNamenvarchar
2、(50),--主键列@fldNamesnvarchar(1000),--要取值的字段名,多个字段通过逗号分割@PageSizeint=0,--页尺寸,0表示不需要分页@PageIndexint=1,--页码,从1开始@OrderTypenvarchar(200)='',--设置排序,'':没有排序要求0:主键升序1:主键降序else:用户自定义排序规则@strWherenvarchar(2000)='',--查询条件(注意:不要加where)@strJoinnvarchar(1000)='',--连接表*/--输出参数:--@To
3、talItemintoutput,--总的记录数--@TotalPageintoutput--总的页数--说明:--(1)当多个表简单的连接时,可以使用该存储过程--(2)需要注意的是多个表参与查询时,要查询的字段最好附带表名,--(3)排序规则要建立在主表上--(4)适用于使用左外连接,这样连接的表不参与建立排序---------------------------------------------------------------------------修改者:--修改日期:--修改说明:-----------------
4、--------------------------------------------------------ALTERPROCEDURE[dbo].[GetRecordFromTableWithSimpleLeftOuterJoinByPage]@tblNamenvarchar(255),--表名@priKeyNamenvarchar(50),--主键列或标示列@fldNamesnvarchar(1000),--字段名,多个字段通过逗号分割@totalfldsnvarchar(500),@PageSizeint,--页尺寸@P
5、ageIndexint,--页码@OrderTypenvarchar(200),--设置排序,'':没有排序要求0:主键升序1:主键降序字符串:用户自定义排序规则@strWherenvarchar(2000),--查询条件(注意:不要加where)@strJoinnvarchar(1000),--连接表@TotalItemintoutput,@TotalPageintoutputASdeclare@strByPagenvarchar(4000)--分页查询语句declare@strNoPagenvarchar(1500)--不分页
6、查询语句,获得所有符合条件的记录declare@strTotalnvarchar(1000)--统计符合条件的纪录数declare@strNonResultnvarchar(1500)--返回空记录的语句declare@strTmpnvarchar(100)declare@strOrdernvarchar(200)declare@strSqlnvarchar(4000)if@OrderTypeisnullor@OrderType=''beginset@strOrder=''set@strTmp=''endelseif@OrderT
7、ype='0'--降序beginset@strTmp=@tblName+'.'+@priKeyName+'>(selectmax(['+@priKeyName+'])from'set@strOrder='orderby'+@tblName+'.'+@priKeyName+'asc'endelseif@OrderType='1'--降序beginset@strTmp=@tblName+'.'+@priKeyName+'<(selectmin(['+@priKeyName+'])from'set@strOrder='orderby'+
8、@tblName+'.'+@priKeyName+'desc'endelse--用户自定义排序规则beginset@strTmp=''set@strOrder='orderby'+@OrderTypeendset@strJoin=''+@strJo