加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

新版本的SqlServer分布存储过程

发布时间:2020-12-12 13:26:39 所属栏目:MsSql教程 来源:网络整理
导读: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 -- Creat

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,@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,@RecordCount OUTPUT END END 

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读