久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

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

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

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

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

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

/* 函數名稱: GetRecordFromPage 函數功能: 獲取指定頁的數據 參數說明: @tblName;;;包含數據的表名 @fldName;;;關鍵字段名 @PageSize;;每頁記錄數 @PageIndex;要獲取的頁碼 @OrderType;排序類型, 0 - 升序, 1 - 降序 @strWhere;;查詢條件 (注意: 不要加 where) 作者: 鐵拳 郵箱: sunjianhua_kki@sina.com 創建時間: 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;;;-- 輸出總記錄數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);;;-- 統計總記錄數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)

-----統計總記錄數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;-----統計結束

--set @strOut=@strSQLGO

標簽: Sql Server 數據庫
主站蜘蛛池模板: 天堂网中文在线 | 欧美八区 | 黄色大片视频网站 | 成人欧美一区二区三区在线播放 | 日日干夜夜骑 | 亚洲自拍偷拍欧美 | 国产1区2区3区 | 亚洲欧美综合 | 日韩视频在线一区 | 狠狠干欧美 | 欧美成人精品一区二区三区 | 成人av影视在线观看 | 在线看www| 国产福利一区二区 | www.久久爱.cn | 国产精品欧美一区二区三区不卡 | 亚洲永久免费视频 | 成人超碰 | 午夜精品久久久久久久久久久久久 | 天天干人人 | 国产精品无码永久免费888 | 精品伊人久久 | 国产毛片毛片 | 亚洲视频在线观看 | 亚洲一级毛片 | 美女三区 | aaaa网站| 亚洲高清免费视频 | 欧美一区二区三区 | 高清国产午夜精品久久久久久 | 91电影在线观看 | 精品成人免费一区二区在线播放 | www麻豆| 91精品久久久久久久久久入口 | 四色成人av永久网址 | 久草免费在线视频 | 欧美日韩国产一区二区三区不卡 | 一区二区三区欧美在线 | 免费在线看a| 久久亚洲精品中文字幕 | 国产精品无码久久久久 |