SQL 分頁儲存過程
GO
/****** Object: StoredProcedure [dbo].[UP_GetRecordByPage] Script Date: 2020-09-24 13:20:25 ******/
DROP PROCEDURE [dbo].[UP_GetRecordByPage]
GO
/****** Object: StoredProcedure [dbo].[UP_GetRecordByPage] Script Date: 2020-09-24 13:20:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object: StoredProcedure [dbo].[UP_GetRecordByPage] Script Date: 04/14/2015 16:57:36 ******/
--IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[UP_GetRecordByPage]') AND type in (N'P', N'PC'))
--DROP PROCEDURE [dbo].[UP_GetRecordByPage]
--GO
CREATE PROCEDURE [dbo].[UP_GetRecordByPage]
(
@tblName varchar(255), -- 表名
@strGetFields varchar(4000) = '*', -- 需要返回的列
@fldName varchar(255)='', -- 排序的欄位名
@PageSize int = 10, -- 頁尺寸
@PageIndex int = 1, -- 頁碼
@IsReCount bit = 0, -- 返回記錄總數, 非 0 值則返回
@OrderType int = 0, -- 設定排序型別, 0升序、1降序、2任意欄位的升和降,需要注意傳入值否則查詢出錯
@strWhere varchar(1500) = '' -- 查詢條件 (注意: 不要加 where)
)
AS
declare @strSQL varchar(8000) -- 主語句
declare @strOrder varchar(5000) -- 排序型別
if @IsReCount != 0
begin
if @strWhere !=''
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 @strOrder ='SELECT ROW_NUMBER() OVER (ORDER BY '+@fldName +' asc) AS RowNumber, '+@strGetFields+' FROM '
end
else if @OrderType = 1
begin
set @strOrder ='SELECT ROW_NUMBER() OVER (ORDER BY '+@fldName +' desc) AS RowNumber, '+@strGetFields+' FROM '
end
else if @OrderType = 2
begin
set @strOrder ='SELECT ROW_NUMBER() OVER (ORDER BY '+@fldName +') AS RowNumber, '+@strGetFields+' FROM '
end
if @strWhere != ''
set @strSQL = ' SELECT TOP ' + str(@PageSize) +' * FROM ( '+@strOrder+' '+@tblName+' where '+@strWhere+' ) t '
+'WHERE RowNumber >= 1+'+str(@PageSize*(@PageIndex-1))
else
set @strSQL = ' SELECT TOP ' + str(@PageSize) +' * FROM ( '+@strOrder+' '+@tblName+' ) t '
+'WHERE RowNumber >= 1+'+str(@PageSize*(@PageIndex-1))
end
print(@strSQL)
exec (@strSQL)
GO
相關文章
- Sql儲存過程分頁--臨時表儲存SQL儲存過程
- SqlServer-儲存過程分頁SQLServer儲存過程
- Oracle 儲存過程分頁 + Sqlsugar呼叫Oracle儲存過程SqlSugar
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- SQL server儲存過程函式SQLServer儲存過程函式
- SQL Server儲存過程的優缺點SQLServer儲存過程
- 【SQL Server】常見系統儲存過程SQLServer儲存過程
- 使用儲存過程(PL/SQL)向資料庫中儲存BLOB物件儲存過程SQL資料庫物件
- SQL SERVER儲存過程AS和GO的含義SQLServer儲存過程Go
- PL/SQL中動態掉用儲存過程SQL儲存過程
- EF中使用SQL語句或儲存過程SQL儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- 儲存過程與儲存函式儲存過程儲存函式
- SQLSERVER儲存過程SQLServer儲存過程
- 呼叫儲存過程儲存過程
- mysql 儲存過程MySql儲存過程
- unidac儲存過程儲存過程
- firedac儲存過程儲存過程
- Oracle儲存過程Oracle儲存過程
- Oracle服務啟動-索引-子查詢-分頁儲存過程問題Oracle索引儲存過程
- SQL Server 2005的複製儲存過程選項BYSQLServer儲存過程
- MySQL儲存過程裡動態SQL的使用UXMySql儲存過程UX
- SQL Server 資料訪問策略:儲存過程QCSQLServer儲存過程
- MyBatis(八) 資料庫BLOB讀寫、批量更新操作、儲存過程呼叫、分表、分頁MyBatis資料庫儲存過程
- SQL Server實戰五:儲存過程與觸發器SQLServer儲存過程觸發器
- Ms Sql Server查詢儲存過程中的內容SQLServer儲存過程
- 儲存過程vs.動態SQL:如何選用?PV儲存過程SQL
- JdbcTemplate調儲存過程JDBC儲存過程
- 造數儲存過程儲存過程
- 儲存過程——遊標儲存過程
- 儲存過程 傳 datatable儲存過程
- JAVA儲存過程(轉)Java儲存過程
- MySQL之儲存過程MySql儲存過程
- oracle的儲存過程Oracle儲存過程
- MySQL---------儲存過程MySql儲存過程
- linux呼叫儲存過程Linux儲存過程
- Winform呼叫儲存過程ORM儲存過程
- mysql儲存過程整理MySql儲存過程