使用儲存過程分頁

2022-01-29 20:35:26 字數 3659 閱讀 1568

use[oa

]go/****** object: storedprocedure [dbo].[spgetbypage] script date: 11/05/2014 13:01:37 *****

*/set ansi_nulls on

goset quoted_identifier on

goalter

procedure

[dbo

].[spgetbypage](

@tblname

varchar(255), --

表名@strgetfields

varchar(1000) ='*

', --

需要返回的列

@fldname

varchar(255)='id

', --

排序的欄位名

@pagesize

int=

5, --

頁尺寸@pageindex

int=

1, --

頁碼@docount

bit=

5, --

返回記錄總數, 非 0 值則返回

@ordertype

bit=

0, --

設定排序型別, 非 0 值則降序

@strwhere

varchar(1500)=

'1=1'--

查詢條件 (注意: 不要加 where))as

declare

@strsql

varchar(5000) --

主語句declare

@strtmp

varchar(110) --

臨時變數

declare

@strorder

varchar(400) --

排序型別

if@docount!=0

begin

if@strwhere

!=''

set@strsql='

select count(*) as total from '+

@tblname+'

where '+

@strwhere

else

set@strsql='

select count(*) as total from '+

@tblname

end--

以上**的意思是如果@docount傳遞過來的不是0,就執行總數統計。以下的所有**都是@docount為0的情況

else

begin

if@ordertype!=0

begin

set@strtmp='

<(select min

'set

@strorder='

order by '+

@fldname+'

desc'--

如果@ordertype不是0,就執行降序,這句很重要!

endelse

begin

set@strtmp='

>(select max

'set

@strorder='

order by '+

@fldname+'

asc'

endif

@pageindex=1

begin

if@strwhere

!=''

set@strsql='

select top '+

str(@pagesize) +''

+@strgetfields+'

from '+

@tblname+'

where '+

@strwhere+'

'+@strorder

else

set@strsql='

select top '+

str(@pagesize) +''

+@strgetfields+'

from '+

@tblname+'

'+@strorder

--如果是第一頁就執行以上**,這樣會加快執行速度

endelse

begin

--以下**賦予了@strsql以真正執行的sql**

set@strsql='

select top '+

str(@pagesize) +''

+@strgetfields+'

from '+

@tblname+'

where '+

@fldname+''

+@strtmp+'

('+@fldname+'

) from (select top '+

str((@pageindex

-1)*

@pagesize) +''

+@fldname+'

from '+

@tblname+''

+@strorder+'

) as tbltmp)'+

@strorder

if@strwhere

!=''

set@strsql='

select top '+

str(@pagesize) +''

+@strgetfields+'

from '+

@tblname+'

where '+

@fldname+''

+@strtmp+'

('+@fldname+'

) from (select top '+

str((@pageindex

-1)*

@pagesize) +''

+@fldname+'

from '+

@tblname+'

where '+

@strwhere+'

'+@strorder+'

) as tbltmp) and '+

@strwhere+'

'+@strorder

endend

exec (@strsql)

c#呼叫

///

///get balanceservers by page

/// ///

//////

///public listgetbalanceserverbypage(int pagesize, int pageindex, out

inttotalcount)

;try }

catch

(exception ex)

return

balancelist;

}

public

static listfillcollection(sqldatareader reader) where t : class, new

()

else

}catch

(exception)

}tlist.add(t);

}return

tlist;

}

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

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

使用儲存過程進行分頁的 儲存過程

使用儲存過程進行分頁的 use blog gocreate procedure blogcontent page pagesize int,一頁多少條 pageindex int,第幾頁 pagecount int output 一共多少頁,輸出引數 asbegin declare totalrec...

使用oracle儲存過程分頁

1.首先在oracle中建儲存過程,儲存過程名庫 procedure prc query create or replace procedure prc query p tablename in varchar2,表名 p strwhere in varchar2,查詢條件 p ordercolum...