SQLServer 2005通用分頁儲存過程
通過SQLServer 2005之後新加入的ROW_NUMBER()函式進行分頁:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
-- =============================================
-- Author:
-- Description:
-- =============================================
Create PROCEDURE [dbo].[ClientNewsPager]
@talbeName varchar(255)='', -- 表名
@getFields varchar(1000)='*', -- 需要返回的列
@orderBy varchar(255)='', -- 排序的欄位名
@PageSize int=15, -- 頁尺寸
@PageIndex int=1, -- 頁碼,從1開始
@doCount bit=0, -- 返回記錄總數, 非 0 值則返回
@whereStr varchar(1500)='' -- 查詢條件 (注意: 不要加 where)
AS
BEGIN
declare @rowResult int
Begin Tran
declare @strSQL varchar(5000)
declare @startRowIndex int
declare @maximumRows int
set @startRowIndex = (@PageIndex - 1) * @PageSize
set @maximumRows = @startRowIndex + @PageSize
if(@doCount!=0)
begin
if @whereStr !=''
set @strSQL = 'select id from ' + @talbeName + ' where '+ @whereStr
else
set @strSQL = 'select id from ' + @talbeName
end
else
begin
if(@whereStr!='')
begin
set @strSQL = 'SELECT ' + @getFields + ' FROM (SELECT ROW_NUMBER() OVER (ORDER BY ' + @orderBy + ') AS RowsNum,' + @getFields + ' FROM ' + @talbeName + ' where ' + @whereStr + ') AS TMP WHERE (RowsNum > ' + str(@startRowIndex) + ' AND RowsNum <= ' + str(@maximumRows) + ')'
end
else
begin
set @strSQL = 'SELECT ' + @getFields + ' FROM (SELECT ROW_NUMBER() OVER (ORDER BY ' + @orderBy + ') AS RowsNum,' + @getFields + ' FROM ' + @talbeName + ') AS TMP WHERE (RowsNum > ' + str(@startRowIndex) + ' AND RowsNum <= ' + str(@maximumRows) + ')'
end
end
exec(@strSQL)
Set @rowResult = @@ROWCOUNT
If @@Error <> 0
Begin
RollBack Tran
Return -1
End
Else
Begin
Commit Tran
Return @rowResult
End
END
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-621852/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SqlServer-儲存過程分頁SQLServer儲存過程
- SQLSERVER儲存過程SQLServer儲存過程
- SQL 分頁儲存過程SQL儲存過程
- Sql儲存過程分頁--臨時表儲存SQL儲存過程
- Sqlserver中的儲存過程SQLServer儲存過程
- Oracle 儲存過程分頁 + Sqlsugar呼叫Oracle儲存過程SqlSugar
- SqlServer儲存過程的建立與使用SQLServer儲存過程
- 【SqlServer】清除過期資料的儲存過程SQLServer儲存過程
- SQL Server 2005的複製儲存過程選項BYSQLServer儲存過程
- SQLServer查詢使用者儲存過程SQLServer儲存過程
- SqlServer儲存過程應用二:分頁查詢資料並動態拼接where條件SQLServer儲存過程
- Q&A:在SQL Server 2005中編寫儲存過程RVSQLServer儲存過程
- sqlserver資料庫還原儲存過程指令碼SQLServer資料庫儲存過程指令碼
- mssql sqlserver 批量刪除所有儲存過程的方法分享SQLServer儲存過程
- go 如何呼叫 sqlserver 帶傳出引數的儲存過程GoSQLServer儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- 儲存過程與儲存函式儲存過程儲存函式
- 呼叫儲存過程儲存過程
- mysql 儲存過程MySql儲存過程
- unidac儲存過程儲存過程
- firedac儲存過程儲存過程
- Oracle儲存過程Oracle儲存過程
- Oracle服務啟動-索引-子查詢-分頁儲存過程問題Oracle索引儲存過程
- MyBatis(八) 資料庫BLOB讀寫、批量更新操作、儲存過程呼叫、分表、分頁MyBatis資料庫儲存過程
- SqlServer 2005 TriggerSQLServer
- JdbcTemplate調儲存過程JDBC儲存過程
- 造數儲存過程儲存過程
- 儲存過程——遊標儲存過程
- 儲存過程 傳 datatable儲存過程
- JAVA儲存過程(轉)Java儲存過程
- MySQL之儲存過程MySql儲存過程
- oracle的儲存過程Oracle儲存過程
- MySQL---------儲存過程MySql儲存過程
- linux呼叫儲存過程Linux儲存過程
- Winform呼叫儲存過程ORM儲存過程
- mysql儲存過程整理MySql儲存過程
- Oracle儲存過程-1Oracle儲存過程
- 【MSSQL】sqlserver 各種判斷是否存在(表名、函式、儲存過程.......)SQLServer函式儲存過程