一個分頁儲存過程。
CREATE PROCEDURE SSO_MyPager
@tblName varchar(255), -- 表名
@strGetFields varchar(1000) = '*', -- 需要返回的列
@fldName varchar(255)='', -- 排序的欄位名
@PageSize int = 10, -- 頁尺寸
@PageIndex int = 1, -- 頁碼
@OrderType bit = 0, -- 設定排序型別, 非 0 值則降序
@strWhere varchar(1500) = '' -- 查詢條件 (注意: 不要加 where)
AS
declare @strSQL varchar(5000) -- 主語句
declare @strTmp varchar(110) -- 臨時變數
declare @strOrder varchar(400) -- 排序型別
begin
if @OrderType != 0
begin
set @strTmp = '<(select min'
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 != ''
set @strSQL = 'select top ' + str(@PageSize) +' '[email protected]+ ' from [' + @tblName + '] where ' + @strWhere + ' ' + @strOrder
else
set @strSQL = 'select top ' + str(@PageSize) +'
--如果是第一頁就執行以上程式碼,這樣會加快執行速度
end
else
begin
--以下程式碼賦予了@strSQL以真正執行的SQL程式碼
set @strSQL = 'select top ' + str(@PageSize) +' '[email protected]+ ' from ['
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['+ @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)'+ @strOrder
if @strWhere != ''
set @strSQL = 'select top ' + str(@PageSize) +' '[email protected]+ ' from ['
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' '
+ @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder
end
end
exec (@strSQL)
GO
相關推薦
一個分頁儲存過程。
CREATE PROCEDURE SSO_MyPager @tblName varchar(255), -- 表名 @strGetFields varchar(1000) = '*', -- 需要返回的列 @fldName varchar(255)='',
mysql分頁儲存過程一步一步實現
1. CREATE DEFINER=`root`@`localhost` PROCEDURE `P_HoverTreePages`( IN `TableName` VARCHAR(200), IN `FieldList` VARCHAR(2000) , IN `Pr
Vs呼叫分頁儲存過程
/// <summary> /// 顯示+分頁+模糊查詢 /// </summary> &n
MSSQL資料庫分頁儲存過程
create procedure [dbo].[p_splitpage] @sql nvarchar(4000), @currentpage int=2, @pagesize int=10, @recordcount int=0 output, @pagecount int=0 out
分頁儲存過程
-- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date,,> -- Description: &l
【資料庫效能測試實戰】測試不同分頁儲存過程在10w,100w以及1000w資料量下面的表現
前言 資料庫的效能與每一行程式碼息息相關,所以,每次寫程式碼可以考慮一下在不同級別的資料量下面測試一下效能。 本文參考了: Postgresql生成大量測試資料 以及 準備測試用資料 此次測試我們將分別用10w,100w以及1000w級別的表來測試,下面先建立
增刪改查分頁儲存過程
--建立資料庫 CREATE DATABASE PROCDB GO --使用資料庫 GO USE PROCDB GO --建立表供儲存過程的實現 CREATE TABLE STUDENTINFOS ( ID INT PRIMARY KEY IDENTITY, S_NAME NVARCHA
C# DataGridView分頁功能(SQL分頁儲存過程實現)
{ dtStaff.Clear(); SqlConnection conn = new SqlConnection(Param_Class.Param_DB.strConn); SqlDataAdapter Sda = new SqlDataA
分頁-儲存過程5種寫法 sqlserver分頁
在SQL Server資料庫操作中,我們常常會用到儲存過程對實現對查詢的資料的分頁處理,以方便瀏覽者的瀏覽。本文我們總結了五種SQL Server分頁儲存過程的方法,並對其效能進行了比較,接下來就讓我們來一起了解一下這一過程。 建立資料庫data_Test : create
sqlServer分頁儲存過程的呼叫
現象: sqlServer的分頁一直相對比較複雜。這裡使用儲存過程實現分頁邏輯 解決辦法 1:action獲取查詢的條件,初始化每頁顯示的大小,page代表當前檢視第幾頁,預設設定為第一頁。rows表示每頁顯示的大小。sort代表查詢按什麼欄位排序 如果要
C#呼叫SQL Server分頁儲存過程
以SQL Server2012提供的offset ..rows fetch next ..rows only為例e.g.表名:Tab1 ---------------------------------- ID Name 1 tblAttributeGroupDetail 2
通用的可帶查詢條件的SQL語句的分頁儲存過程(2)
程式碼二: CREATE PROCEDURE pagination @tblName varchar(255), – 表名 @strGetFields varchar(1000) = ‘*’, – 需要返回的列 @fldName varch
MySql 分頁儲存過程
DELIMITER $$ #修改分隔符為 $$ DROP PROCEDURE IF EXISTS sp_MvcCommonDataSource$$ #分隔符 CREATE PROCEDURE sp_MvcCommonDataSource ( #輸入引數 _fields
MySQL使用limit的通用分頁儲存過程
輸出的結果:通用分頁儲存過程的程式碼:@a 代表要查詢的列名@b 代表要查詢的表名@c 代表從多少個開始@d 代表每次顯示多少條資料DELIMITER $$ USE `t204`$$ DROP PROCEDURE IF EXISTS `pro_01`$$
EntityFramework呼叫分頁儲存過程
感謝博主https://www.cnblogs.com/qk2014/p/6824103.html 此文講述mvc4+entityframework6+sqlserver2008環境下呼叫儲存過程,實現分頁。 1、分頁儲存過程程式碼如下: 分頁原理用的row_nu
MYSQL多表分頁儲存過程
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_AllSiteSearch`(IN pagesize int,IN pageindex int,IN skey varchar(100),IN dt varchar(10),IN
大資料量分頁儲存過程效率測試
我首先寫了五個常用儲存過程: 1,利用select top 和select not in進行分頁,具體程式碼如下: CREATE PROCEDURE Proc_paged_with_notin --利用select top and select n
Sqlserver,MySql 通用分頁儲存過程
MySql 分頁儲存過程 CREATE PROCEDURE ProcPage( in tableName varchar(20),#表名 in showField varchar(100),#要顯示的列名 in whereText varchar(500),#where條件(只需要寫where後面的語句)
SqlServer支援多表關聯的分頁儲存過程
具體程式碼如下所示: CREATE PROCEDURE p_GetPager @TotalCount INT OUTPUT, --總記錄數 @TotalPage INT OUTPUT, --總頁數 @Table NVARCHAR(1
Oracle 高效分頁儲存過程例項 含javademo
關於分頁,想必是每一程式猿都會遇到的問題,解決辦法有很多, 接下來就讓我們嘗試下 oracle 儲存過程實現,直接在資料庫層面實現,重點在於高效 1首先建立 儲存過程用的包,以及宣告儲存過程 --建立包 -- Author : Sugar -- Created