sql server万能分页存储过程

USE [xxx]
GO
/****** Object:  StoredProcedure [dbo].[p_Page]    scrip{过滤}t Date: 08/07/2016 11:56:36 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:                ITSVSE
-- Create date: 2015/11/04
-- Descrip{过滤}tion:        分页
-- =============================================
ALTER PROCEDURE [dbo].[p_Page]
        @PageIndex INT=1, 
        @PageSize INT=10,
        @TbName VARCHAR(50),
        @WhereStr NVARCHAR(1000)=NULL,
        @OrderBy VARCHAR(50)=' ORDER BY ID',
        @Total BIGINT OUTPUT
AS
BEGIN
        SET NOCOUNT ON;
        SELECT @Total=0
        DECLARE @strSQL nvarchar(4000) -- 主Sql          
        IF @WhereStr='' OR @WhereStr IS NULL
        BEGIN                
                SET @strSQL='SELECT @Total=COUNT(0) FROM ['+@TbName +'] WHERE 1=1 '
                EXEC sp_executesql @strSQL,N'@Total BIGINT OUTPUT',@Total OUTPUT;  
                SET @strSQL='SELECT * FROM ['+@TbName+'] WHERE ID IN (SELECT ID FROM (SELECT ID,ROW_NUMBER() OVER ('+@OrderBy+') AS num FROM ['+@TbName+']) AS settable WHERE num BETWEEN '+STR(((@PageIndex-1)*@PageSize)+1)+' AND '+STR(@PageIndex*@PageSize) +')'                
        END
        ELSE
        BEGIN 
                PRINT 'NOT NULL'
                SET @strSQL='SELECT @Total=COUNT(0) FROM ['+@TbName +'] WHERE 1=1 '+@WhereStr
                EXEC sp_executesql @strSQL,N'@Total BIGINT OUTPUT',@Total OUTPUT;  
                SET @strSQL='SELECT * FROM ['+@TbName+'] WHERE ID IN (SELECT ID FROM (SELECT ID,ROW_NUMBER() OVER ('+@OrderBy+') AS num FROM ['+@TbName+'] WHERE 1=1 '+@WhereStr+ ') AS settable WHERE num BETWEEN '+STR((@PageIndex-1)*@PageSize+1)+' AND '+STR(@PageIndex*@PageSize) +')'
        END 
        EXEC(@strSQL)        
END

 

sql万能分页存储过程

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值