通用分页存储过程,干货无污染

简介: 通用分页存储过程,干货无污染
---判断是否存在该存储过程<br>
IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID = OBJECT_ID(N'[dbo].[WEB_PageView]') and OBJECTPROPERTY(ID, N'IsProcedure') = 1)
DROP PROCEDURE [dbo].[WEB_PageView]
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE dbo.WEB_PageView
    @TableName      NVARCHAR(200),          -- 表名
    @ReturnFields   NVARCHAR(1000) = '*',   -- 查询列数
    @PageSize       INT = 10,               -- 每页数目
    @PageIndex      INT = 1,                -- 当前页码
    @Where          NVARCHAR(1000) = '',    -- 查询条件
    @OrderBy        NVARCHAR(1000),         -- 排序字段
    @PageCount      INT OUTPUT,             -- 页码总数
    @RecordCount    INT OUTPUT              -- 记录总数
<br> AS
--设置属性
SET NOCOUNT ON
-- 变量定义
DECLARE @TotalRecord INT
DECLARE @TotalPage INT
DECLARE @CurrentPageSize INT
DECLARE @TotalRecordForPageIndex INT
BEGIN
    IF @Where IS NULL SET @Where=N''
    -- 记录总数
    DECLARE @countSql NVARCHAR(4000) 
    IF @RecordCount IS NULL
    BEGIN
        SET @countSql='SELECT @TotalRecord=Count(*) From '+@TableName+' '+@Where
        EXECUTE sp_executesql @countSql,N'@TotalRecord int out',@TotalRecord OUT
    END
    ELSE
    BEGIN
        SET @TotalRecord=@RecordCount
    END    
    SET @RecordCount=@TotalRecord
    SET @TotalPage=(@TotalRecord-1)/@PageSize+1
    SET @CurrentPageSize=(@PageIndex-1)*@PageSize
    -- 返回总页数和总记录数
    SET @PageCount=@TotalPage
    SET @RecordCount=@TotalRecord
    -- 返回记录
    SET @TotalRecordForPageIndex=@PageIndex*@PageSize
    EXEC    ('SELECT *
            FROM (SELECT TOP '+@TotalRecordForPageIndex+' '+@ReturnFields+', ROW_NUMBER() OVER ('+@OrderBy+') AS PageView_RowNo
            FROM '+@TableName+ ' ' + @Where +' ) AS TempPageViewTable
            WHERE TempPageViewTable.PageView_RowNo >
            '+@CurrentPageSize)
END
RETURN 0
GO
相关文章
|
存储
SQLServer分页获取数据的存储过程
SQLServer分页获取数据的存储过程
46 0
|
存储 开发框架 前端开发
基于MySQL 实现通用分页存储过程(下篇-超详细)(上)
基于MySQL 实现通用分页存储过程(下篇-超详细)
100 0
|
存储 XML 安全
基于MySQL 实现通用分页存储过程(下篇-超详细)(下)
基于MySQL 实现通用分页存储过程(下篇-超详细)
61 0
【干货】SqlServer 总结几种存储过程分页的使用
【干货】SqlServer 总结几种存储过程分页的使用
|
存储 SQL Perl
PL/SQL编程—分页功能(存储过程)
PL/SQL编程—分页功能(存储过程)
118 0
|
存储 SQL 数据处理
通用多表分页存储过程
CREATE PROCEDURE [dbo].[GetRecordByPage] ( @tblName nvarchar(400), ----要显示的表或多个表的连接 @fldName nvarchar(4000) = '*', ----要显示的字...
846 0
|
存储
分页存储过程
CREATE PROCEDURE [dbo].[GetRecordByPager] @tblName varchar(255), -- 表名 @fldName varchar(255), -- 主键字段名 @PageSize int = 10, -- 页尺寸 @PageI...
736 0
|
8天前
|
存储 SQL NoSQL
|
1月前
|
存储 SQL 关系型数据库
MySql数据库---存储过程
MySql数据库---存储过程
31 5
|
1月前
|
存储 关系型数据库 MySQL
MySQL 存储过程返回更新前记录
MySQL 存储过程返回更新前记录
44 3