国产探花免费观看_亚洲丰满少妇自慰呻吟_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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石河子市| 醴陵市| 肥城市| 宁乡县| 鸡东县| 东乡族自治县| 九台市| 兖州市| 建平县| 宁城县| 永平县| 佳木斯市| 连平县| 定西市| 兴仁县| 乐昌市| 三都| 田阳县| 湖口县| 乌拉特后旗| 建湖县| 苏尼特左旗| 昭苏县| 甘南县| 洛川县| 乡宁县| 社旗县| 东安县| 南和县| 佳木斯市| 晋州市| 阿尔山市| 玉环县| 基隆市| 博野县| 武陟县| 科尔| 湾仔区| 赣州市| 剑阁县| 瑞丽市|