资源描述:
《sqlserver分页存储过程(已通过验证)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、我从别处拷贝的代码,但在条件判断的位置出问题,我改动了下上传,给大家分享!useusersgoifexists(selectnamefromsysobjectswherename='pages'andxtype='p')dropprocpagesgoCREATEPROCpages@tblNamevarchar(255),--表名@strGetFieldsvarchar(1000),--需要返回的列@fldNamevarchar(255),--排序的字段名@PageSizeint,--多少条/页@PageIndex
2、int,--页码@doCountbit,--返回记录总数,0不返回,1返回@OrderTypebit,--设置排序类型,0升序,1降序@strWherevarchar(1500)--查询条件(注意:不要加where)ASdeclare@strSQLvarchar(5000)--主语句declare@strTmpvarchar(150)--临时变量declare@strOrdervarchar(400)--排序类型--如果@doCount传递过来的不是0,就执行总数统计。if@doCount!=0begin--查询
3、条件为空set@strSQL='selectcount(*)asTotalfrom'+@tblName--查询条件不为空if@strWhere!=''set@strSQL='selectcount(*)asTotalfrom'+@tblName+'where'+@strWhereend--以下的所有代码都是@doCount为0的情况:--如果@OrderType是1,就执行降序,否则为升序!elsebegin--查询条件为空set@strTmp='>(selectmax'set@strOrder='orderby
4、'+@fldName+'asc'--查询条件不为空if@OrderType=1beginset@strTmp='<(selectmin'set@strOrder='orderby'+@fldName+'desc'end--如果是第一页就执行代码,这样会加快执行速度if@PageIndex=1begin--查询条件为空set@strSQL='selecttop'+str(@PageSize)+''+@strGetFields+'from'+@tblName+''+@strOrder--如果查询条件不为空,if@st
5、rWhere!=''set@strSQL='selecttop'+str(@PageSize)+''+@strGetFields+'from'+@tblName+'where'+@strWhere+''+@strOrderend--如果不是第一页,则elsebegin--以下代码赋予了@strSQL以真正执行的SQL代码--sql查询语句set@strSQL='selecttop'+str(@PageSize)+''+@strGetFields+'from'+@tblName+'where'+@fldName+'
6、'+@strTmp+'('+@fldName+')from(selecttop'+str((@PageIndex-1)*@PageSize)+''+@fldName+'from'+@tblName+''+@strOrder+')astblTmp)'+@strOrder--如果查询条件不为空,则另写sql语句if@strWhere!=''set@strSQL='selecttop'+str(@PageSize)+''+@strGetFields+'from'+@tblName+'where'+@fldName+''
7、+@strTmp+'('+@fldName+')from(selecttop'+str((@PageIndex-1)*@PageSize)+''+@fldName+'from'+@tblName+'where'+@strWhere+''+@strOrder+')astblTmp)and'+@strWhere+''+@strOrderendendexec(@strSQL)GO--运行存储过程pages--表名varchar,要返回的列名(*为返回所有)varchar,排序的列varchar,每页显示数量int,--
8、第几页int,是否统计总数bit,是否降序排列bit,排列条件(不要带where)varchar--统计borrow表的记录数量execpages'uu','*','',0,0,1,0,''--按borrowid排倒序分别显示1、2、3页的信息execpages'uu','*','uid',4,1,0,1,''execpages'uu','*','uid',4,2,0,1