新版本的SqlServer分布存储过程

SQL 2005及以上版本

/****** Object:  StoredProcedure [dbo].[PageQuery]    Script Date: 04/13/2012 14:26:57 ******/  
SET ANSI_NULLS ON  
GO  
SET QUOTED_IDENTIFIER ON  
GO  
-- =============================================  
-- Author:      <Author,,Name>  
-- Create date: <Create Date,,>  
-- Description: <Description,,>  
-- =============================================  
CREATE PROCEDURE [dbo].[Page_Query]  
    @TableName   NVARCHAR(255),         -- 表名  
    @Fields NVARCHAR(1000) = '*',       -- 需要返回的列  
    @OrderFields NVARCHAR(255)='',      -- 排序的字段名,不带ORDER BY 关键字,必填  
    @PageSize   INT = 10,               -- 页尺寸  
    @PageIndex  INT = 1,                -- 页码  
    @Where  NVARCHAR(1500) = '',        -- 查询条件 (注意: 不要加 where)  
    @NeedCount BIT = 0,  
    @RecordCount INT OUTPUT  
AS  
BEGIN  
    DECLARE @ExceSql NVARCHAR(MAX)  

    IF @Where !=''  
      SET @Where =' WHERE ' + @Where  

    SET @ExceSql='SELECT * FROM (SELECT ROW_NUMBER() OVER ( ORDER BY ' + @OrderFields + ') AS pos,' + @Fields + ' FROM ' + @TableName + @Where + ') AS sp WHERE pos BETWEEN '+STR( ( @PageIndex - 1 ) * @PageSize + 1 ) + ' AND ' + STR( @PageIndex * @PageSize )  
    EXEC (@ExceSql)  

    SET @RecordCount = 0  
    IF @NeedCount = 1  
    BEGIN  
        SET @ExceSql='SELECT @RecordCount=COUNT(1) FROM ' + @TableName + @Where  
        EXEC sp_executesql @ExceSql, N'@RecordCount INT OUTPUT', @RecordCount OUTPUT  
    END  
END  

SQL 2012及以上版本

/****** Object:  StoredProcedure [dbo].[PageQuery]    Script Date: 04/13/2012 14:26:57 ******/  
SET ANSI_NULLS ON  
GO  
SET QUOTED_IDENTIFIER ON  
GO  
-- =============================================  
-- Author:      <Author,,Name>  
-- Create date: <Create Date,,>  
-- Description: <Description,,>  
-- =============================================  
CREATE PROCEDURE [dbo].[Page_Query]  
    @TableName   NVARCHAR(255),         -- 表名  
    @Fields NVARCHAR(1000) = '*',       -- 需要返回的列  
    @OrderFields NVARCHAR(255)='',      -- 排序的字段名,不带ORDER BY 关键字,必填  
    @PageSize   INT = 10,               -- 页尺寸  
    @PageIndex  INT = 1,                -- 页码  
    @Where  NVARCHAR(1500) = '',        -- 查询条件 (注意: 不要加 where)  
    @NeedCount BIT = 0,  
    @RecordCount INT OUTPUT  
AS  
BEGIN  
    DECLARE @ExceSql NVARCHAR(MAX)  

    IF @Where !=''  
      SET @Where =' WHERE ' + @Where  

    SET @ExceSql='SELECT ' + @Fields + ' FROM ' + @TableName + @Where + ' ORDER BY ' + @OrderFields + ' OFFSET ' + STR( ( @PageIndex - 1 ) * @PageSize ) + ' ROWS FETCH NEXT ' + STR( @PageSize ) + ' ROWS ONLY'
    EXEC (@ExceSql)  

    SET @RecordCount = 0  
    IF @NeedCount = 1  
    BEGIN  
        SET @ExceSql='SELECT @RecordCount=COUNT(1) FROM ' + @TableName + @Where  
        EXEC sp_executesql @ExceSql, N'@RecordCount INT OUTPUT', @RecordCount OUTPUT  
    END  
END  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烈火蜓蜻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值