儲存過程實現分頁

2021-04-20 07:45:33 字數 4116 閱讀 1543

一:

create

procedure

[dbo]

.[basic_pagination2000]

@tblname

varchar

(255),

-- 表名

@fidlelist

varchar

(2000),

--要查詢字段

@fldname

varchar

(255),

-- 排序字段

@pagesize

int,

-- 頁尺寸

@pageindex

int,

-- 頁碼

@isrecount

bit,

-- 返回記錄總數, 非

0 值則返回

@ordertype

bit,

-- 設定排序型別, 非

0 值則降序

@strwhere

varchar

(1000)

-- 查詢條件(注意

: 不要加

where) as

declare

@strsql

varchar

(6000)

-- 主語句

declare

@strtmp

varchar

(100),

@tmpwhere

varchar

(200)

-- 臨時變數

declare

@strorder

varchar

(400)

-- 排序型別

if@ordertype

!= 0

begin

set@strtmp

='<(select min'

set@strorder

=' order by ['

+@fldname

+'] desc'

end

else

begin

set@strtmp

='>(select max'

set@strorder

=' order by ['

+@fldname

+'] asc'

end

set@tmpwhere=''

;if(@strwhere

!='')

begin

set@tmpwhere

=' where '

;end if

@pageindex

= 1

begin

set@strsql

='select top '

+str

(@pagesize)+

' '+

@fidlelist

+' '

+'from ['

+@tblname

+'] '

+@tmpwhere

+' '

+@strorder

end

else

begin

set@strsql

='select top '

+str

(@pagesize)+

' '+

@fidlelist

+' '

+'from ['

+@tblname

+'] where ['+

@fldname

+']'

+@strtmp

+'(['

+@fldname

+']) from

(select top '

+str

((@pageindex

-1)*

@pagesize)+

' ['

+@fldname

+'] from ['+

@tblname

+'] '

+@tmpwhere

+' '

+@strorder

+') as tbltmp) '

+@tmpwhere

+' '

+@strorder

end

exec

(@strsql)

if@isrecount

!= 0

begin

set@strsql

='select count(*)

as total from ['

+@tblname

+']'

+@strwhere

exec

(@strsql)

end二:

alter

procedure

[dbo]

.[basic_pagination2005]

@tblname

nvarchar

(200),

--表名

@fidlelist

nvarchar

(1000),

--要查詢字段

@fldname

nvarchar

(100),

--排序字段

@pagesize

int,

--頁尺寸

@pageindex

int,

--頁碼

@isrecount

bit,

-- 返回記錄總數, 非

0 值則返回

@ordertype

bit,

-- 設定排序型別, 非

0 值則降序

@strwhere

nvarchar

(1000)

--查詢條件 as

declare

@sqlstr

nvarchar

(4000),

@tmpwhere

nvarchar

(4000),

@tmporder

nvarchar

(100)

begin if

@ordertype

!= 0

begin

set@tmporder

=@fldname

+' desc '

end

else

begin

set@tmporder

=@fldname

+' asc '

end

set@tmpwhere=''

;if(@strwhere

!='')

begin

set@tmpwhere

=' where '

+@strwhere

;end

set@sqlstr

=n'select * from

(select'

+@fidlelist

+', row_number() over(order

by '

+@tmporder

+') as row from '

+@tblname

+@tmpwhere

+')

tmp where row between '

+cast

(((@pageindex

-1)*

@pagesize

+1)as

nvarchar

)+' and '

+cast (

@pageindex

*@pagesize

asnvarchar

);exec

sp_executesql

@sqlstr

if@isrecount

!= 0

begin

set@sqlstr

=n'select count(*) as total from '

+@tblname

+@tmpwhere

exec

sp_executesql

@sqlstr

end

end

儲存過程實現分頁

一 create procedure dbo basic pagination2000 tblname varchar 255 表名 fidlelist varchar 2000 要查詢字段 fldname varchar 255 排序字段 pagesize int,頁尺寸 pageindex in...

分頁儲存過程 分頁儲存過程

分頁儲存過程 alter proc dbo p pageshow pagesize int,每頁大小 currentpage int out,當前頁 housename nvarchar 50 房產名稱 totalcount int out,總記錄數 totalpage int out 總頁數 as...

通過儲存過程實現分頁

create procedure dbo commonpageselect sqlwhere varchar 1000 查詢條件 pagenum int 20,每頁的記錄數 beginline int 1,第幾頁,預設第一頁 sqltable varchar 5000 要查詢的表或檢視,也可以一句s...