资源描述:
《dnt分页存储过程解析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、DNT的几个分页存储过程解析在DNT安装时会创建一些存储过程,用于完成DNT的功能。这些存储过程位于、upload_filesinstallsqlscriptsqlserver文件夹中的setup2.2-2005.sql文件中。其屮的分页存储过程如下:我认识存储过程这个东西不久,仔细看了下,注释出来.下边列举的4个分页存储过程,写法风格各不相同.在算法上只有两种.一个使用了ROW_NUMBER()OVER(ORDERBY[aid]DESC)ASROWID这个函数.另一个手动计算页码,将该页的所有数据以DESC的方式选到一个临时表中.再在这个表中搜索Top数据.然后返回
2、.从风格上讲,前两个使用了很多参数来组织语句,代码美观大方.后两个先组织了Sql字符串,加入搜索条件后才使用EXEC语句执行.代码乱七八糟的,不是很好看,但也实现了功能.(1)dnt_getfavoriteslist获取用户收藏的存储过程这个存储过程用于查看用户收藏是的分页显示•返回一个包含帖子主题的表供前台调用CREATEPROCEDURE[dnt_getfavoriteslist]--分页获取收藏主题表QuidINT,--用户:ED@pagesizeINT,--页大小QpageindexINT―第几页AS—SELECT[f].[uid],[f].[tid],[topic
3、s].[titie],[topics].[poster],[topics].[postdatetime],[topics].[replies],[topics].[views],[topics].[posterid]FROM[dnt_favorites][f]LEFTJOIN[dnt_topics][topics]ON[f].[tid]=[topics].[tid]WHERE[f].[typeid]=0AND[f].[uid]=@uidIFQpageindex=1--处理第一页BEGINSELECTTOP(@pagesize)--因为是第一页,选择出前@pagesize就是
4、所需要的内容[uid]/[tid],[title]/[poster],[postdatetime],[replies],[views],[posterid]FROM(SELECT[f].[uid],--这个Select用于选出用八用八所有的收藏[f]代表表[dnt_favorites]»[topics]代表[dnt_topics]--两个表连接起来查询出用户收藏的所有主题[f].[tid],[topics]•[title]/[topics]•[poster],[topics]•[postdatetime]z[topics]•[replies].[topics]•[views
5、],[topics]•[posterid]FROM[dnt_favorites][f]―此处设置f代表[dnt_favorites]LEFTJOIN[dnt_topics][topics]ON[f]・[tid]=[topics]・[tid]WHERE[f].[typeid]=0AND[f]•[uid]=@uid)favorites--此处的favorites相当于一个表。From语句后边的SELECT语句选择出來的内容存放着这个表中ORDERBY[tid]DESCENDELSEBEGIN--gpageindex不等于1,处理其他页SELECTTOP(Qpagesize)--
6、不是第一页,需要对选择出來内容的范圉加以约束。Where之后未约束FROMWHERE[uid]/[tid],[title]z[poster],[postdatetime]A[replies],[views]/[posterid](SELECT[f].[uid],[f]•[tid],[topics].[title]/[topics]•[poster],[topics]•[posz[topics]•[replies],[topics]•[views],[topics]•[posterid]FROM[dnt_favorites][f]LEFTJOIN[dnt_topics][to
7、pics]ON[f].[tid]=[topics]・[tid]WHERE[f]・[typeid]=0AND[f].[uid]=@uid)fl[tid]<(SELECTMIN([tid])--根据页大小和页序号设置TID的范围FROM(SELECTTOP((@pageindex-1)*Qpagesize)[tid]查询FROM(SELECT[f].[uid],--这里跟处理第一页一样,选择出所有收藏的内容作为一个表,供[f].[tid],[topics]•[titie],[topics]•[poster],[topi