據說很快的資料庫分頁儲存過程

2021-04-16 23:09:57 字數 3218 閱讀 7289

create

procedure

sqldatapaging

@tbname

varchar

(255

),

--表名

@tbfields

varchar

(1000

),

--返回字段

@orderfield

varchar

(255

),

--排序的欄位名

@pagesize

int,

--頁尺寸

@pageindex

int,

--頁碼

@ordertype

bit,

--排序型別,1是公升序,0是降序

@strwhere

varchar

(1500

),

--查詢條件

@total

intoutput

--返回總記錄數

asdeclare

@strsql

varchar

(5000

)

--主語句

declare

@strorder

varchar

(200

)

--排序

declare

@strsqlcount

nvarchar

(500)--

查詢記錄總數主語句

declare

@strtemp

varchar(50

)

--排序附加語句

--------------排序-----------------1是降序,0未公升序

if@ordertype!=0

begin

set@strtemp='

>(select max(

'set

@strorder='

order by '+

@orderfield+'

asc

'end

else

begin

set@strtemp='

<(select min(

'set

@strorder='

order by '+

@orderfield+'

desc

'end

--------------總記錄數---------------

if@strwhere

!=''

begin

set@strsqlcount='

select @totalcout=count(*) from '+

@tbname+'

where '+

@strwhere

endelse

begin

set@strsqlcount='

select @totalcout=count(*) from '+

@tbname

end--

------------如果是第一頁------------

if@pageindex=1

begin

if@strwhere

!=''

begin

set@strsql='

select top'+

str(

@pagesize)+

''+@tbfields+'

from '+

@tbname+'

where '+

@strwhere+'

'+@strorder

endelse

begin

set@strsql='

select top'+

str(

@pagesize)+

''+@tbfields+'

from '+

@tbname+'

'+@strorder

endend

else

begin

if@strwhere

!=''

begin

set@strsql='

select top '+

str(

@pagesize) +

''+@tbfields+'

from '+

@tbname+'

where '+

@orderfield+'

'+@strtemp+'

'+@orderfield+'

) from (select top'+

str((

@pageindex-1

)*@pagesize) +

''+@orderfield+'

from '+

@tbname

+@strwhere+'

'+@strorder+'

) as tb)'+

@strorder

endelse

begin

set@strsql='

select top '+

str(

@pagesize) +

''+@tbfields+'

from '+

@tbname+'

where '+

@orderfield+'

'+@strtemp+'

'+@orderfield+'

) from (select top'+

str((

@pageindex-1

)*@pagesize) +

''+@orderfield+'

from '+

@tbname+'

'+@strorder+'

) as tb)'+

@strorder

endend

exec

sp_executesql

@strsqlcount,n'

@totalcout int output',

@total

output

exec

(@strsql

)

資料庫端分頁儲存過程

近日專案中要用到大批量的資料分頁顯示,而vs2003中的datagrid中的分頁機制是整個的讀出資料到記憶體,再將記憶體中符合分頁條件的資料顯示到頁面,如果資料量達到一定程式會占用大量系統資源,導致整個程式反應遲鈍。因而只好採用在資料庫端分頁的方法,每次只讀出指定的記錄數。create proced...

資料庫非儲存過程分頁

oracle中的分頁 select from select a.rownum rc from 表名 where rownum endrow a where a.rc startrow select a1.from select student.rownum rn from student a1 wh...

MSSQL MySQL 資料庫分頁 儲存過程

先看看單條 sql 語句的分頁 sql 吧。方法1 適用於 sql server 2000 2005 複製 如下 select top 頁大小 from table1 where id not in select top 頁大小 頁數 1 id frwww.cppcns.comom table1 o...