建立儲存過程的sql語句:
use[db_wms]/*
db_wms 為資料庫名稱,可替換
*/go
/****** object: storedprocedure [dbo].[procpaging] script date: 01/24/2014 16:05:00 *****
*/set ansi_nulls on
goset quoted_identifier on
gocreate
proc
[dbo
].[procpaging](
@tablename
nvarchar(20
),
@orderby
nvarchar(10
),
@pagesize
int,
@pagecurrentindex
int,/*
起始頁為0
*/@where
nvarchar(2000
),
@pagecount
intoutput,
@recordcount
intoutput)as
begin
ifisnull(@where,'')=
''set
@where
=n''
else
set@where
=n'where '+
@where
declare
@top
int,@sql
nvarchar(4000
)
/*記錄資料總數
*/begin
set@sql
= n'
select @recordcount = count(*) from '+
@tablename
+@where
exec sp_executesql @sql,n'
@recordcount int output
',@recordcount
output
end/*
計算總頁數
*/set
@pagecount
=ceiling(@recordcount
*1.0
/@pagesize
)
/*計算要獲取的頁面的top資料
*/set
@top
=@pagecurrentindex
*@pagesize
/*如果是第一頁或者總頁數為1
*/if
@pagecurrentindex=0
or@pagecount
<=
1begin
set@sql
=n'select top('+
convert(nvarchar(10), @pagesize)+n'
) * from '+
@tablename
+@where
+ n'
order by '+
@orderby
exec sp_executesql @sql
endelse
begin
/*如果是最後一頁
*/if
@pagecurrentindex
=@pagecount-1
begin
set@sql
=n'select top('+
convert(nvarchar(10), @recordcount) + n'- '
+convert(nvarchar(10), @top) + n'
) * from '+
@tablename
+@where
+ n'
order by '+
@orderby
+n'desc
'exec sp_executesql @sql
endelse
begin
set@sql
= n'
select top('+
convert(nvarchar(10), @pagesize) + n'
) * from (select top('+
convert(nvarchar(10), @top) + n'+ '
+convert(nvarchar(10), @pagesize) + n'
) * from '+
@tablename
+@where
+ n'
order by '+
@orderby
+n'asc) t order by '+
@orderby
+n'desc
'exec sp_executesql @sql
endend
select
@pagecountas'
pagecount
',@recordcountas'
recordcount
',@pagecurrentindex
'index
'end
go
後台呼叫儲存過程**:
publicstatic dataset excuteprocpaging(string tablename,string orderby,int pagecurrentindex, string @where, out
intpagecount)
//資料介面卡執行儲存過程
using (sqldataadapter sda = new
sqldataadapter())
catch
finally
}return
ds; }
}
在對儲存過程引數賦值後,除了資料介面卡sqldataadapter執行儲存過程外,還可以通過command.executescalar()方法執行儲存過程。下面一段**跟資料分頁無關。
publicstatic
string excuteprocheck(string username, string
pwd)
catch
finally
}}
SQL Server儲過程分頁演算法研究
1.俄羅斯儲存過程 的改良版 create procedure pagination1 pagesize int,頁面大小,如每頁儲存20條記錄 pageindex int 當前頁碼 as set nocount on begin declare indextable table id int id...
簡單的分頁儲存過程
傳入參數列名 當前頁 每頁大小 查詢字段傳入自己需要的資料 也可以全部。where條件可以為空。排序欄位按自己的需求設定 create procedure prc page result in tablename varchar 100 表名 in currpage int,當前頁 in pages...
利用儲存過程實現資料分頁
利用ms sql2000的儲存過程實現資料分頁讀取,可簡化讀取的資料量。本過程的優點在於,輸入的sql語句沒有限制條件,而且寫法和思路都很簡單明瞭。create procedure dbo pageshow sql varchar 8000 where語句 pagesize int 10,每頁的大小...