成人视屏在线观看-国产99精品-国产精品1区2区-欧美一级在线观看-国产一区二区日韩-色九九九

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

自己改寫(xiě)的一個(gè)sql server 2000的分頁(yè)存儲(chǔ)過(guò)程

瀏覽:160日期:2023-11-01 18:25:17

優(yōu)點(diǎn)如下,簡(jiǎn)單,直接sql語(yǔ)句輸入,高效,效率很高測(cè)試過(guò)了,不過(guò)最好是主鍵排序,還有少用視圖 。

缺點(diǎn)也有,不支持復(fù)雜的sql語(yǔ)句,不能多字段排序,sql語(yǔ)句必須小于4000字符

/* 經(jīng)測(cè)試,在 14483461 條記錄中查詢第 100000 頁(yè),每頁(yè) 10 條記錄按升序和降序第一次時(shí)間均為 0.47 秒,第二次時(shí)間均為 0.43 秒,測(cè)試語(yǔ)法如下: exec GetRecordFromPage news,newsid,10,100000 news 為 表名, newsid 為關(guān)鍵字段, 使用時(shí)請(qǐng)先對(duì) newsid 建立索引。*/

/* 函數(shù)名稱(chēng): GetRecordFromPage 函數(shù)功能: 獲取指定頁(yè)的數(shù)據(jù) 參數(shù)說(shuō)明: @tblName;;;包含數(shù)據(jù)的表名 @fldName;;;關(guān)鍵字段名 @PageSize;;每頁(yè)記錄數(shù) @PageIndex;要獲取的頁(yè)碼 @OrderType;排序類(lèi)型, 0 - 升序, 1 - 降序 @strWhere;;查詢條件 (注意: 不要加 where) 作者: 鐵拳 郵箱: sunjianhua_kki@sina.com 創(chuàng)建時(shí)間: 2004-07-04 修改時(shí)間: 2004-07-04 http://blog.knowsky.com/*/CREATEPROCEDURE GetRecordFromPage1 @SQL;;varchar(8000),;;;-- SQL語(yǔ)句 @PageSize;;int = 10,-- 頁(yè)尺寸 @PageIndex;int = 1,;-- 頁(yè)碼 --@strOut varchar(6000) output 輸出處理完成的SQL語(yǔ)句 @RecordCount; int = 0 output;;;-- 輸出總記錄數(shù)AS

declare @strSQLvarchar(8000);;;;-- 最后獲取的SQL語(yǔ)句declare @strTmpvarchar(8000);;;;-- 臨時(shí)變量declare @strOrder varchar(500);;;;;-- 排序類(lèi)型declare @tblName; varchar(255);;;;;-- 表名declare @fldName; varchar(255);;;;;-- 字段名declare @strWhere varchar(8000);;;;-- 查詢條件 (注意: 不要加 where)declare @tmpOrder varchar(255);;;;;-- 排序字符串臨時(shí)變量declare @strFilds varchar(8000);;;;-- 需要顯示的列declare @intFilds int;;;-- 顯示的列所在位置declare @intOrder int -- 排序字符串位置declare @intSQLint;;;-- SQL語(yǔ)句長(zhǎng)度declare @intWhere int -- where字符串位置declare @intTable int;;;-- 表名稱(chēng)位置declare @strRsSql nvarchar(4000);;;-- 統(tǒng)計(jì)總記錄數(shù)sql語(yǔ)句

set @intOrder=CharIndex('order by',@SQL)set @intSQL=Len(@SQL)

set @intFilds=CharIndex('select',@SQL)set @strFilds=SubString(@SQL,@intFilds+7,@intSQL-@intFilds-1)set @strFilds=SubString(@strFilds,1,CharIndex('from',@strFilds)-1)

set @tblName=SubString(@SQL,CharIndex('from',@SQL)+5,@intSQL-CharIndex('from',@SQL)+5)set @intTable=CharIndex(' ',@tblName)if @intTable>0begin set @tblName=SubString(@tblName,1,@intTable-1)end

set @intWhere=CharIndex('where ',@SQL)if @intWhere>0begin if @intOrder>0 begin set @strWhere=SubString(@SQL,@intWhere+6,@intOrder-@intWhere-7) end else begin set @strWhere=SubString(@SQL,@intWhere+6,@intSQL-@intWhere-5) endendelsebegin set @strWhere=''end

if @intOrder>0begin set @strOrder=' '+SubString(@SQL,@intOrder,@intSQL-@intOrder+1) set @tmpOrder=SubString(@strOrder,11,Len(@strOrder)-10) if CharIndex(' ',@tmpOrder)>0 begin set @fldName=SubString(@tmpOrder,1,CharIndex(' ',@tmpOrder)-1) end else begin set @fldName=@tmpOrder end if CharIndex('desc',@SQL)>0 begin set @strTmp='<(select min' end else begin set @strTmp='>(select max' endendelsebegin set @fldName='ID' set @strTmp = '>(select max' set @strOrder = ' order by [' + @fldName +'] asc'end

set @strSQL = 'select top ' + LTrim(str(@PageSize)) + ' '+@strFilds+' from [' + @tblName + '] where [' + @fldName + ']' + @strTmp + '([' + @fldName + ']) from (select top ' + LTrim(str((@PageIndex-1)*@PageSize)) + ' [' + @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)' + @strOrder

if @strWhere != '' set @strSQL = 'select top ' + LTrim(str(@PageSize)) + ' '+@strFilds+' from [' + @tblName + '] where [' + @fldName + ']' + @strTmp + '([' + @fldName + ']) from (select top ' + LTrim(str((@PageIndex-1)*@PageSize)) + ' [' + @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' ' + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder

if @PageIndex = 1begin set @strTmp = '' if @strWhere != '' set @strTmp = ' where (' + @strWhere + ')'

set @strSQL = 'select top ' + LTrim(str(@PageSize)) + ' '+@strFilds+' from [' + @tblName + ']' + @strTmp + ' ' + @strOrderend

exec (@strSQL)

-----統(tǒng)計(jì)總記錄數(shù)if @strWhere!=''begin set @strRsSql='select @RecordCount=count('+@fldName+') from ['+@tblName +'] where ('+@strWhere+')'endelsebegin set @strRsSql='select @RecordCount=count('+@fldName+') from ['+@tblName +']'endEXEC sp_executesql @strRsSql,N'@RecordCount int out',@RecordCount out;-----統(tǒng)計(jì)結(jié)束

--set @strOut=@strSQLGO

主站蜘蛛池模板: 欧美日韩中 | 亚洲精品国产一区二区 | 色欧美hdvideosxs4k | 成人午夜亚洲影视在线观看 | 九九视频精品在线 | 国产老妇k| 亚洲香蕉一区二区三区在线观看 | 成年人免费在线视频 | 成人黄色在线网站 | 国产福利一区二区在线精品 | 国产色爽女小说免费看 | 国产日韩久久久久69影院 | 日本精品中文字幕有码 | 日韩三级视频在线观看 | 91精品乱码一区二区三区 | 免费午夜扒丝袜www在线看 | 亚洲免费视频网 | 国产高清在线观看 | 日本国产欧美色综合 | 手机看片手机在线看片 | 亚洲免费视频播放 | 亚洲系列国产系列 | 亚洲视频精品在线 | 国产精品久久久久久久 | 国产精品久久久久久久专区 | 国产成人精品一区二区视频 | 欧美大片毛片aaa免费看 | 真实国产普通话对白乱子子伦视频 | 久久久久久亚洲精品影院 | 午夜欧美成人香蕉剧场 | 国产成人精品高清免费 | 欧美亚洲视频在线观看 | 欧美人与zoxxxx另类9 | 视频一区二区在线 | 萌白酱粉嫩jk福利在线观看 | 理论片免费午夜 | 中文国产成人精品久久96 | 香港黄页亚洲一级 | 国产高清一区 | 2022国产91精品久久久久久 | 九九久久精品 |