实现SQL分页的存储过程代码_MsSql

SQL分页的存储过程代码,需要的朋友们直接拿去用,使用非常简单。

分享代码如下

USE [SendMessage]
GO
/****** Object: StoredProcedure [dbo].[pages]  Script Date: 07/09/2015 13:46:50 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[pages]
(
@tbname   nvarchar(100),        --要分页显示的表名
@FieldKey  nvarchar(1000),   --用于定位记录的主键(惟一键)字段,可以是逗号分隔的多个字段
@PageCurrent int=1,        --要显示的页码
@PageSize  int=10,        --每页的大小(记录数)
@FieldShow nvarchar(1000)='',   --以逗号分隔的要显示的字段列表,如果不指定,则显示所有字段
@FieldOrder nvarchar(1000)='',   --以逗号分隔的排序字段列表,可以指定在字段后面指定DESC/ASC
@WhereString  nvarchar(1000)=N''   --查询条件
)
AS
begin

IF ISNULL(@FieldKey,N'')=''
BEGIN
  RAISERROR(N'分页处理需要主键(或者惟一键)',1,16)
  RETURN
END

IF ISNULL(@PageCurrent,0)<1 SET @PageCurrent=1

IF ISNULL(@PageSize,0)<1 SET @PageSize=10

IF ISNULL(@FieldShow,N'')=N'' SET @FieldShow=N'*'

IF ISNULL(@FieldOrder,N'')=N''
  SET @FieldOrder=N''
ELSE
  SET @FieldOrder=N'ORDER BY '+LTRIM(@FieldOrder)

IF ISNULL(@WhereString,N'')=N''
  SET @WhereString=N''
ELSE
  SET @WhereString=N'WHERE '+@WhereString+N''

--计算分页显示的TOPN值
DECLARE @TopN varchar(20),@StartRecord varchar(20),@EndRecord varchar(20)
SELECT @TopN=@PageSize,
  @StartRecord=(@PageCurrent-1)*@PageSize+1,
  @EndRecord=(@PageCurrent-1)*@PageSize+@PageSize

--第一页直接显示
IF @PageCurrent=1
  EXEC(N'SELECT TOP '+@TopN
    +N' '+@FieldShow
    +N' FROM '+@tbname
    +N' '+@WhereString
    +N' '+@FieldOrder)
ELSE
EXEC(N'with temptbl as(
select ROW_NUMBER() Over('+@FieldOrder+') as row, '+@FieldKey+' from '+@tbname+N' '+@WhereString+')
select '+@FieldShow+' from (select B.* from (select '+@FieldKey+' from temptbl where row between '+@StartRecord+' and '+@EndRecord+')A left join '+@tbname+' B on A.'+@FieldKey+'=B.'+@FieldKey+')C')

END

以上就是本文的全部内容,希望对大家的学习有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索存储过程
, 分页存储过程
SQL分页存储过程
mssql 存储过程分页、存储过程实现分页、mssql 存储过程、mssql 调用存储过程、mssql执行存储过程,以便于您获取更多的相关知识。

时间: 2024-09-15 00:19:34

实现SQL分页的存储过程代码_MsSql的相关文章

SQL Server 分页查询存储过程代码_MsSql

复制代码 代码如下: CREATE PROCEDURE [dbo].[up_Pager] @table varchar(2000), --表名 @col varchar(50), --按该列来进行分页 @orderby bit, --排序,0-顺序,1-倒序 @collist varchar(800),--要查询出的字段列表,*表示全部字段 @pagesize int, --每页记录数 @page int, --指定页 @condition varchar(800) --查询条件 AS DECL

目前用到的两个分页存储过程代码_MsSql

第一个,取得数据总行数 复制代码 代码如下: set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER PROCEDURE [sq8reyoung].[fenye_num] ( @TableNames NVARCHAR(200), @Filter nvarchar(200)) AS IF @Filter = '' SET @Filter = ' WHERE 1=1' ELSE SET @Filter = ' WHERE ' + @Filter EXE

SQL分页查询方式汇总_MsSql

需求:查询表dbo.Message,每页10条,查询第2页 1:TOP() SELECT TOP(20) * FROM dbo.Message WHERE Code NOT IN (SELECT TOP(10) Code FROM dbo.Message) 2:BETWEEN * AND * , Row_Number() OVER(ORDER BY *) AS rowNum SELECT *,ROW_NUMBER() OVER(ORDER BY Code) AS rowNum INTO #a F

一个基于ROW_NUMBER()的通用分页存储过程代码_MsSql

建立好如下的存储过程,以后要分页,直接调用改存储过程就可以了. 注意:数据量大.性能要求高的,请个性化处理. 复制代码 代码如下: ALTER PROCEDURE [dbo].[COMMON_PROCEDURE_SelectWithPage] @Sql VARCHAR(5000), @CurrentPageNo INT, @PageSize INT, @TotalNum INT OUTPUT AS SET NOCOUNT ON DECLARE @SqlCmd VARCHAR(5000) ----

sqlserver 千万数量级分页存储过程代码_MsSql

复制代码 代码如下: set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go Create PROCEDURE [dbo].[SP_Pagination] /**//* *************************************************************** ** 千万数量级分页存储过程 ** *************************************************************** 参

SQL分页查询存储过程实例代码

话不多说,请看代码 ------------------------------------- -----作者:张欣宇 -----时间:2013-06-28 -----简介:根据参数和条件分页查询 ------------------------------------- Createproc [dbo].[Up_PagingQueryByParameter] (  ----- 表名或能查询到结果的SQL语句{SQL语句左右必须有括号例:(select * from tbl1)}  @Table

一个分页存储过程代码_MsSql

复制代码 代码如下: ------------------------------------ --用途:分页存储过程(对有主键的表效率极高) --说明: ------------------------------------ ALTER PROCEDURE [UP_GetRecordByPage] @tblName varchar(255), -- 表名 @fldName varchar(255), -- 主键字段名 @PageSize int = 10, -- 页尺寸 @PageIndex

数据库分页存储过程代码_MsSql

复制代码 代码如下: /*  数据库分页存储过程,支持倒序和升序  参数说明:    @tablename:为搜索表名    @tablefield:为表的字段,约定为表的主键,    @where:为搜索表名,要显示所有记录请设为"1=1"    @orderby:为搜索结果排序,如order by id desc    @fieldlist:为字段列表,如userid, username    @curpage:当前页码    @page_record:每页记录条数    @Sor

分页存储过程代码_MsSql

复制代码 代码如下: /* *@curentpage 当前页 *@pagesize 每页记录数 *@TableName 表名 *@key 主键(自动排序) *@where 查询条件 1)空为 null 2)有查询条件不要带where *@order '0'表示 desc '1'是asc *@pageCount 总页数 */ create procedure Page @currentpage int,@pagesize int, @TableName varchar(30),@key varch