国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

自己改寫的一個sql server 2000的分頁存儲過程

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

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

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

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

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

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

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)計總記錄數(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)計結(jié)束

--set @strOut=@strSQLGO

標(biāo)簽: Sql Server 數(shù)據(jù)庫
主站蜘蛛池模板: 欧美一级毛片在线 | 亚洲影院在线 | 国产玖玖玖精品视频 | 日本伊人精品一区二区三区 | 亚洲欧美另类在线视频 | 毛片免费永久不卡视频观看 | 又刺激又黄的一级毛片 | 在线看一级片 | 久久精品在线观看 | a级做爰片毛片视频 | 亚洲国产精品网站久久 | 三级网站免费 | 亚洲国产精品国产自在在线 | 美女张开双腿让男人桶视频免费 | 在线观看免费为成年视频 | 亚洲一区二区三区四区在线观看 | 国产在线成人一区二区 | 黄色福利小视频 | 国产在线乱子伦一区二区 | 国产精品视频永久免费播放 | 久久93精品国产91久久综合 | 国产精品九九久久一区hh | 日本高清免费视频www | 中文字幕一区二区三区精品 | 有码视频在线观看 | 国产成人综合91香蕉 | 亚洲精品一区二区三区中文字幕 | 泷泽萝拉亚洲精品中文字幕 | 国产一级一级一级成人毛片 | 成年免费在线观看 | 欧美一区亚洲二区 | 色黄在线| 国产精品免费_区二区三区观看 | 久久手机视频 | 欧美激情欧美狂野欧美精品免费 | 亚洲一区二区三区中文字幕 | dvd8090cnm欧美大片 | 国产精品视频免费播放 | 亚洲高清在线观看看片 | 精品日本久久久久久久久久 | 又黄又爽视频好爽视频 |