乙個通用的分頁儲存過程 原創

2021-09-05 15:00:08 字數 2043 閱讀 4103

這是我專案中使用的乙個分頁儲存過程,具有很強的通用性。配合前台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...