asp.net利用儲存過程分頁程式碼
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
--最通用的分頁儲存過程
-- 獲取指定頁的資料
ALTER PROCEDURE [dbo].[Pagination]
@tblName varchar(255), -- 表名
@strGetFields varchar(1000) = '*', -- 需要返回的列
@fldName varchar(255)='', -- 排序的欄位名
@PageSize int = 5, -- 頁尺寸
@PageIndex int = 1, -- 頁碼
@doCount int = 1, -- 返回記錄總數, 非 0 值則返回
@OrderType int = 0, -- 設定排序型別, 非 0 值則降序
@strWhere varchar(1500) = '' -- 查詢條件 (注意: 不要加 where)
AS
declare @strSQL varchar(5000) -- 主語句
declare @strTmp varchar(110) -- 臨時變數
declare @strOrder varchar(400) -- 排序型別
if @doCount != 0 --返回總行數的情況下
begin
if @strWhere !='' --有where條件
set @strSQL = 'select count(*) as Total from ['+ @tblName +'] where '+ @strWhere
else
set @strSQL = 'select count(*) as Total from ['+ @tblName +']'
end
--以上程式碼的意思是如果@doCount傳遞過來的不是0,就執行總數統計。以下的所有程式碼都
--是@doCount為0的情況
else --不返回總行數的情況下
begin
if @OrderType != 0 --降序排列
begin
set @strTmp = '
set @strOrder = ' order by ['+ @fldName +'] desc'
--如果@OrderType不是0,就執行降序,這句很重要!
end
else --升序排列
begin
set @strTmp = '>(select max'
set @strOrder = ' order by ['+ @fldName +'] asc'
end
if @PageIndex = 1 --第一頁
begin
if @strWhere != '' --有where條件
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ['+ @tblName +'] where ' + @strWhere + ' '
else --沒有where條件
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ['+ @tblName +'] '
if @fldName!='' --判斷排序欄位是否為空
set @strSQL=@strSQL+@strOrder
--如果是第一頁就執行以上程式碼,這樣會加快執行速度
end
else --不是第一頁情況下
begin
--以下程式碼賦予了@strSQL以真正執行的SQL程式碼
if @strWhere != '' --有where條件情況下
begin
if @fldName!='' --判斷排序欄位是否為空
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ['+ @tblName +'] where [' + @fldName + ']' + @strTmp + '(['+ @fldName + '])
from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['+ @fldName + ']
from ['+ @tblName +'] where ' + @strWhere + ' ' + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder
else
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ['+ @tblName +'] where [' + @fldName + ']' + @strTmp + '(['+ @fldName + '])
from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['+ @fldName + ']
from ['+ @tblName +'] where ' + @strWhere + ' ) as tblTmp) and ' + @strWhere
end
else--沒有where條件情況下
begin
if @fldName!='' --判斷排序欄位是否為空
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from [' + @tblName +'] where [' + @fldName + ']' + @strTmp + '(['+ @fldName + '])
from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['+ @fldName + '] from ['+ @tblName +']' + @strOrder + ') as tblTmp)'+ @strOrder
else
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from [' + @tblName +'] where [' + @fldName + ']' + @strTmp + '(['+ @fldName + '])
from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['+ @fldName + '] from ['+ @tblName +']) as tblTmp)'
end
end
end
exec ( @strSQL)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-611630/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle儲存過程分頁程式碼Oracle儲存過程
- asp.net SQL Server 儲存過程分頁及程式碼呼叫ASP.NETSQLServer儲存過程
- ORACLE高效分頁儲存過程程式碼Oracle儲存過程
- 分頁儲存過程儲存過程
- SQL 分頁儲存過程SQL儲存過程
- 通用分頁儲存過程儲存過程
- sql儲存過程分頁SQL儲存過程
- SqlServer-儲存過程分頁SQLServer儲存過程
- 淺述asp.net海量分頁資料儲存過程ASP.NET儲存過程
- asp.net分頁的SQL語句及儲存過程ASP.NETSQL儲存過程
- Sql儲存過程分頁--臨時表儲存SQL儲存過程
- (SQL Server)分頁的儲存過程SQLServer儲存過程
- 簡單的儲存過程分頁儲存過程
- 簡單的分頁儲存過程儲存過程
- Oracle 儲存過程分頁 + Sqlsugar呼叫Oracle儲存過程SqlSugar
- 兩種SQL分頁方法儲存過程和遊標儲存過程SQL儲存過程
- sqlserver儲存過程實現多表分頁SQLServer儲存過程
- 分頁控制元件及儲存過程控制元件儲存過程
- [MSSQL]mssql海量高效分頁儲存過程SQL儲存過程
- 基於ROWCOUNT的分頁儲存過程儲存過程
- asp.net分頁控制元件AspNetPager的使用,使用傳統分頁和儲存過程分頁ASP.NET控制元件儲存過程
- 使用儲存過程實現分頁列印 (轉)儲存過程
- SQLServer 2005通用分頁儲存過程SQLServer儲存過程
- 拋磚引玉——通用分頁儲存過程儲存過程
- SQL SERVER 2005分頁儲存過程SQLServer儲存過程
- ASP.NET中利用儲存過程實現模糊查詢ASP.NET儲存過程
- 儲存過程分頁 Ado.Net分頁 EF分頁 滿足90%以上儲存過程
- SQL Server 儲存過程的經典分頁(轉)SQLServer儲存過程
- JDBC 呼叫儲存過程程式碼示例JDBC儲存過程
- 完整的分頁儲存過程以及c#呼叫方法儲存過程C#
- 一個比較不錯的儲存過程分頁儲存過程
- [Procedure]Oracle之分頁儲存過程Oracle儲存過程
- Mysql儲存過程基礎(案例+程式碼)MySql儲存過程
- 我的測試儲存過程程式碼儲存過程
- SQL Server 2000 的分頁查詢(儲存過程)SQLServer儲存過程
- MySQL儲存過程-->長字串扯分MySql儲存過程字串
- 通用的SQL Server資料庫查詢分頁儲存過程SQLServer資料庫儲存過程
- 支援DISTINCT的通用分頁儲存過程(SQL2005)儲存過程SQL