這是我專案中使用的乙個分頁儲存過程,具有很強的通用性。配合前台asp.net使用50萬條資料基本感不到延遲。資料庫為sqlserver2000。
1. 分頁儲存過程(原始碼)
create procedure pagination
@str_sql varchar(1000) = '*', -- 執行的sql 不含order by 內容
@str_orderfield varchar(255)='''', -- 排序的欄位名
@page_size int = 10, -- 頁大小
@page_index int = 0, -- 頁碼
@order_type int, -- 設定排序型別, 非 -1 值則降序
@total_count int output -- 返回記錄總數, 非 0 值則返回
as---------------------
-- 獲取指定頁的資料--
---------------------
declare @strsql varchar(5000) -- 主語句
declare @strtmp varchar(5000) -- 臨時變數
declare @strorder varchar(400) -- 排序字串
declare @crurow int -- 當前行號
--執行總數統計
exec getrowcount @str_sql,@total_count output
set @strtmp = ' select * from ' +
' (select top ' + convert(varchar(10),@page_size) + ' * from ' +
' (select top ' + convert(varchar(10),(@page_index + 1) * @page_size) +' * from ' -- n+1頁
--排序方向
if @order_type !=0
begin
set @strsql= @strtmp +
' order by @str_orderfield asc) a ' +
' order by @str_orderfield desc)b' +
' order by @str_orderfield asc'
endelse
begin
set @strsql= @strtmp +
' order by @str_orderfield desc) a ' +
' order by @str_orderfieldasc)b' +
' order by @str_orderfield desc'
endexec (@strsql)
go2. 分頁儲存過程(原始碼) 執行中用到的行數統計
create procedure getrowcount
@sql nvarchar(2000),
@count int output
asbegin
--------------------
-- 獲取資料總行數 --
--------------------
declare @tmpsql nvarchar(2000)
set @tmpsql='select @count=count(*) from ('+ @sql +') a'
execute sp_executesql @tmpsql,n'@count int output',@count output
endgo
乙個通用的分頁儲存過程
這是我專案中使用的乙個分頁儲存過程,具有很強的通用性。配合前台asp.net使用50萬條資料基本感不到延遲。資料庫為sqlserver2000。1.分頁儲存過程 create procedure pagination str sql varchar 1000 執行的sql 不含order by 內容...
乙個通用的資料分頁的儲存過程
乙個通用的資料分頁的儲存過程 create procedure sp page tb varchar 20 表名 col varchar 20 按該列來進行分頁 coltype bit,col列的型別,0 數字型別,1 字元型別 collist varchar 800 要查詢出的字段列表 selec...
乙個通用的資料分頁的儲存過程
乙個通用的資料分頁的儲存過程 create procedure sp page tb varchar 20 表名 col varchar 20 按該列來進行分頁 coltype bit,col列的型別,0 數字型別,1 字元型別 collist varchar 800 要查詢出的字段列表 selec...