国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

實現千萬級數據的分頁顯示

2024-07-21 02:11:25
字體:
來源:轉載
供稿:網友

這是經我該寫后的存儲過程
---------------------------------------------------------
alter       procedure usp_getrecordfrompage
    @tblname       varchar(1000),        -- 表名
    @selectfieldname    varchar(4000),              -- 要顯示的字段名(不要加select)
    @strwhere       varchar(4000),              -- 查詢條件(注意: 不要加 where)
    @orderfieldname      varchar(255),               -- 排序索引字段名
    @pagesize       int ,                 -- 頁大小
    @pageindex      int = 1,                  -- 頁碼
    @irowcount      int output,                 -- 返回記錄總數
    @ordertype      bit = 0                  -- 設置排序類型, 非 0 值則降序
          
as

declare @strsql    varchar(4000)       -- 主語句
declare @strtmp    varchar(4000)        -- 臨時變量
declare @strorder  varchar(400)        -- 排序類型
declare @strrowcount    nvarchar(4000)      -- 用于查詢記錄總數的語句

set @orderfieldname=ltrim(rtrim(@orderfieldname))

if @ordertype != 0
begin
    set @strtmp = '<(select min'
    set @strorder = ' order by ' + @orderfieldname +' desc'
end
else
begin
    set @strtmp = '>(select max'
    set @strorder = ' order by ' + @orderfieldname +' asc'
end

set @strsql = 'select top ' + str(@pagesize) + @selectfieldname+' from '
    + @tblname + ' where ' + @orderfieldname + @strtmp + '('
    + right(@orderfieldname,len(@orderfieldname)-charindex('.',@orderfieldname)) + ') from (select top ' + str((@pageindex-1)*@pagesize)
    + @orderfieldname + ' from ' + @tblname  + @strorder + ') as tbltmp)'
    + @strorder

if @strwhere != ''
    set @strsql = 'select top ' + str(@pagesize) + @selectfieldname+' from '
        + @tblname + ' where ' + @orderfieldname + @strtmp + '('
        + right(@orderfieldname,len(@orderfieldname)-charindex('.',@orderfieldname)) + ') from (select top ' + str((@pageindex-1)*@pagesize)
        + @orderfieldname + ' 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) + @selectfieldname+' from '
        + @tblname + @strtmp + ' ' + @strorder
end

exec(@strsql)
 
if @strwhere!=''
begin
  set @strrowcount = 'select @irowcount=count(*) from ' + @tblname+' where '[email protected]
end
else
begin
  set @strrowcount = 'select @irowcount=count(*) from ' + @tblname
end

exec sp_executesql @strrowcount,n'@irowcount int out',@irowcount out


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平乐县| 龙口市| 敖汉旗| 西畴县| 洛隆县| 南宫市| 潞西市| 吴江市| 文水县| 麻江县| 正镶白旗| 宁夏| 五华县| 昌都县| 勐海县| 子洲县| 西安市| 永顺县| 新巴尔虎左旗| 治县。| 田东县| 秭归县| 宿迁市| 临漳县| 涟水县| 东丽区| 平果县| 阿瓦提县| 吴江市| 罗源县| 射阳县| 萨迦县| 乌拉特中旗| 佛冈县| 永定县| 陇南市| 莱西市| 辽阳市| 宁夏| 宁津县| 定南县|