createprocedure
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...