色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(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爱视频 | 国产成人精品日本亚洲语音1 | 男人的天堂久久香蕉国产 | 免费特黄 | 国产精品久久精品 | 亚洲网视频 | 亚洲最大看欧美片网站 | 亚洲天堂视频网 | 思99re久久这里只有精品首页 | 成人黄色在线观看 | 日本久久久久久 | 国产99在线播放 | 中文字幕日韩一区二区不卡 | 国产激情久久久久久影院 | 一级毛片黄片 | 收集最新中文国产中文字幕 | 黄网站www| 又黄又骚| 久久精品国产99久久久 | 波多野结衣视频免费在线观看 | 久久久精品久久久久久久久久久 | 欧美精品国产一区二区三区 | 亚洲国产精品欧美日韩一区二区 | 成人免费毛片一区二区三区 | 国产免费一区二区三区免费视频 | 黄在线观看在线播放720p | 欧美综合视频在线观看 | 色站综合| 国产精品每日更新在线观看 | 波多野结衣一区二区 三区 波多野结衣一区二区三区88 | 女人张开腿让男人插 | 国产一级第一级毛片 | 日韩精品一区二区三区在线观看l | 一级片www | 亚洲精品线在线观看 | 日韩一区二区三区在线 | 成人性动漫高清免费观看网址 | 亚洲国产精品一区二区三区 | 自拍 欧美 在线 综合 另类 | 午夜剧场成年 | 国产精品日产三级在线观看 |