SQL 2005 多表分頁儲存過程

2022-03-20 02:34:16 字數 2953 閱讀 9416

#region 返回所有職位物件 帶分頁

///

/// #region 返回所有職位物件帶分頁

///

/// 當前頁

/// 每頁顯示數

/// 返回 頁數

/// 返回總項數

/// 《物件集合》

public static listgetallmodel(int curpage, int size, ref int pagesize, ref  int totalsize)}}

}catch (exception ex)

finally

}pagesize = (int)pagecount.value;

totalsize = (int)recordcount.value;

return postionmodellist;

}#endregion

測試: 排序項不能為空

declare @i int

declare @j int

exec sp_abitableload

'department.departmentname,positions.id,positions.positionname',

'department,positions',

' positions.departmentid = department.id ',

'positions.id',

2,5,

@i output,

@j output

select @i,@j

create proc [dbo].[sp_abitableload]

----------------------------------------------

--        單錶多表分頁儲存過程    --

-- 1.支援單錶多表分頁查詢     --

-- 2.支援排序        --

-- 3.支援表名重新命名       --

-- 4.返回總頁數        --

-- 5.返回總記錄數       --

-- 6.帶行編號        --

-- 缺陷:         --

-- 1.多表查詢時,各表中各列名不許出現重名 --

-- edit by shardine 2007.1.19    --

----------------------------------------------

@strfields varchar(500),  --欄位名

@strtablename varchar(500), --表名

@strwhere varchar(500),  --條件 無需加where

@strorderby varchar(200), --排序 必添 無需加order by

@pagesize int,    --分頁大小

@currentpage int,   --當前頁,1為起始頁

@pagecount int output,  --返回總頁數

@recordcount int output  --返回記錄總數

asbegin

declare @startindex int     --定義起始位置

set @startindex = (@currentpage - 1) * @pagesize + 1

declare @strsql1 nvarchar (800) --資料查詢

declare @strsql2 nvarchar (1000) --統計記錄總數

declare @parmdefinition nvarchar (800)

set @parmdefinition = n'@tmp int output'

set @strsql1 = n'select row_number() over (order by ' + @strorderby + ' ) as rowid, '

set @strsql2 = 'select @tmp = count(*) '

if @strfields <> ''

set @strsql1 = @strsql1 + @strfields

else

set @strsql1 = @strsql1 + ' * '

if @strtablename <> ''

begin

set @strsql1 = @strsql1 + ' from ' + @strtablename

set @strsql2 = @strsql2 + ' from ' + @strtablename

endif @strwhere <> ''

begin

set @strsql1 = @strsql1 + ' where ' + @strwhere

set @strsql2 = @strsql2 + ' where ' + @strwhere

endexec sp_executesql @strsql2,@parmdefinition,@tmp = @recordcount output  --執行統計記錄總數sql語句

if @recordcount % @pagesize = 0  --計算總頁數

set @pagecount = @recordcount / @pagesize

else

set @pagecount = @recordcount / @pagesize + 1

set @strsql1 = 'with temptable as ( ' + @strsql1 + ' ) select * from temptable where rowid between '

+ convert(varchar(10),@startindex) + ' and ' + convert(varchar(10),@startindex + @pagesize - 1)

exec(@strsql1)

end

SQL 2005 儲存過程分頁

create procedure dbo p pagetest sql nvarchar max sql語句不包括排序 curpage int,當前頁 pagerows int,頁面尺寸 order nvarchar 20 排序字段 ordertype nvarchar 10 排序型別倒序desc或...

SQL2005 分頁儲存過程

最近在使用sqlserver2005的資料庫編碼,查到有乙個row number order by 字段 的函式,通過該函式進行分頁非常的方便,請大家看看我寫的分頁儲存過程。分頁儲存過程 create procedure dbo proc testpage 表名 tablename nvarchar...

Sql2005中分頁儲存過程

set ansi nulls on goset ansi nulls on set quoted identifier on goalter procedure pagetest tblname varchar 255 表名 fldname varchar 255 主鍵欄位名 pagesize in...