国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
實現(xiàn)千萬級數(shù)據(jù)分頁的存儲過程!《
續(xù)》

                    鐵 拳


/*
  此存儲過程的思路是將關(guān)鍵字段與無重復(fù)索引字段結(jié)合起來進(jìn)行排序,如果關(guān)鍵字
  段有重復(fù),可再按索引字段進(jìn)行排序從而進(jìn)一步分頁,需強調(diào)的是
@fldIndex 字
  段類型必須為可參與數(shù)學(xué)計算的數(shù)據(jù)類型,即使 @fldIndex 字段有重復(fù)也可使
  用,只要 @flName 字段和 @fldIndex 不同時具有重復(fù)數(shù)據(jù)即可正常使用。例
  如下表所示:

 IDCustIDBirthday

131982-03-10

231979-10-04

341980-09-02

  如果按 ID 排序,則可以使用 ID 作為 @fldName 并且省略 @fldIndex 參數(shù),
  如果按 CustID 排序則將 CustID 作為 @fldName 并以 ID 作為 @fldIndex
  字段,如果同時出現(xiàn) ID 與 CustID 重復(fù)的情況下就不適合使用這種參數(shù),例如:

 
IDCustIDBirthday

131982-03-10

131979-10-04

341980-09-02

  只要 @fldIndex 和 @fldName 字段不同時出現(xiàn)重復(fù)就可以了,如果數(shù)據(jù)中具有
  唯一索引的主鍵字段,則應(yīng)使用該字段作為 @fldIndex 參數(shù),無需其它條件。


  SQL Server 查詢分析器中調(diào)用方法如下:
  exec GetRecordFromPage ‘TableName‘, ‘SortField‘, ‘IndexField‘, 10, 5, 0,
                         ‘IndexField > 10 AND IndexField <> 100‘

  更多參考請見:
    http://blog.csdn.net/sun_jianhua/archive/2004/07/04/33574.aspx

*/


/*

  函數(shù)名稱: GetRecordFromPage
  函數(shù)功能: 獲取指定頁的數(shù)據(jù)
  參數(shù)說明: @tblName      包含數(shù)據(jù)的表名
           @fldName      關(guān)鍵字段名
           @fldIndex     無重復(fù)索引字段
           @PageSize     每頁記錄數(shù)
           @PageIndex    要獲取的頁碼
           @OrderType    排序類型, 0 - 升序, 1 - 降序
           @strWhere     查詢條件 (注意: 不要加 where)
  作  者: 鐵拳
  郵  箱: sunjianhua_kki@sina.com
  創(chuàng)建時間: 2004-07-04
  修改時間: 2005-09-21
*/
CREATE PROCEDURE GetRecordFromPage
    @tblName      varchar(255),       -- 表名
    @fldName      varchar(255),       -- 字段名
    @fldIndex     varchar(255)=‘‘,    -- 無重復(fù)索引字段
    @PageSize     int = 10,           -- 頁尺寸
    @PageIndex    int = 1,            -- 頁碼
    @OrderType    bit = 0,            -- 設(shè)置排序類型, 非 0 值則降序
    @strWhere     varchar(2000) = ‘‘  -- 查詢條件 (注意: 不要加 where)
AS

declare @strSQL   varchar(6000)       -- 主語句
declare @strTmp   varchar(1000)       -- 臨時變量
declare @strOrder varchar(500)        -- 排序類型
declare @strField varchar(1000)       -- 用來聯(lián)合的字段

if @PageIndex < 1
    return

set @strField = ‘[‘ + @fldName + ‘]‘

-- 計算后的數(shù)據(jù)精確到小數(shù)點后 33 位
if @fldIndex != ‘‘

    set @strField = ‘ convert(numeric(38,33), [‘ + @fldName
        + ‘]) + convert(numeric(38,33), [‘ + @fldIndex
        + ‘] / 10000000000000000000000000000) ‘


if @OrderType != 0
begin
    set @strTmp = ‘<(select min‘
    set @strOrder = ‘ order by ‘ + @strField + ‘ desc‘
end
else
begin
    set @strTmp = ‘>(select max‘
    set @strOrder = ‘ order by ‘ + @strField + ‘ asc‘
end

set @strSQL = ‘select top ‘ + str(@PageSize) + ‘ * from [‘
    + @tblName + ‘] where ‘ + @strField + @strTmp
    + ‘(tmpIndex) from (select top ‘ + str((@PageIndex-1)*@PageSize) + @strField
    + ‘ tmpIndex from [‘ + @tblName + ‘]‘ + @strOrder + ‘) as tblTmp)‘
    + @strOrder

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

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

    set @strSQL = ‘select top ‘ + str(@PageSize) + ‘ * from [‘
        + @tblName + ‘]‘ + @strTmp + ‘ ‘ + @strOrder
end

exec (@strSQL)
GO
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
[百萬級]通用分頁存儲過程.[千萬級]實現(xiàn)千萬級數(shù)據(jù)的分頁顯示! - SQL Server - 數(shù)據(jù)庫開發(fā) - 大家論壇 - Powered by Discuz!
實現(xiàn)千萬級數(shù)據(jù)的分頁顯示!
sql分頁存儲過程
cxGrid分頁問題
sql分頁
動軟使用心得
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服