SQL 存储过程分页

CREATE PROC p_Team_GetTemaList
    @pageindex INT ,
    @pagesize INT ,
    @keywords VARCHAR(200) , --模糊查询 名称 标签 
    @citycode VARCHAR(100) ,
    @verifyStatus  INT =0,-- -1所有的 0 没有通过 1 审核通过
    @orderby INT,
    @TotalCount INT OUTPUT
AS
    BEGIN
        DECLARE @PageLowerBound INT
        DECLARE @PageUpperBound INT 
        DECLARE @Where  VARCHAR(300)=''
        DECLARE @Order  VARCHAR(300)=''
        DECLARE @exsql NVARCHAR(1000)=''
        SET @PageLowerBound = @PageSize * ( @PageIndex - 1 )
        SET @PageUpperBound = @PageSize - 1 + @PageLowerBound
        --条件
        SET @Where=' WHERE 1=1 ' 
			IF @verifyStatus>=0 --条件 数字
				BEGIN
					SET @Where =@Where+' and verifyStatus = '+CAST(@verifyStatus AS VARCHAR(200))
				END
                        IF LEN(@citycode)>0
			       BEGIN 
				 SET @Where =@Where+' AND StartCityCode = '''+CAST(@citycode AS VARCHAR(50))+''''
			       END
			IF LEN(@citycode)>0 --条件字符串
				BEGIN
					SET @Where =@Where+' and City  LIKE ''%'+CAST(@citycode AS VARCHAR(200))+'%'''
				END
			IF LEN(@keywords)>0 --模糊查询
				BEGIN
					SET @Where =@Where+' and ('
					SET @Where =@Where+'  TeamName  LIKE ''%'+CAST(@keywords AS VARCHAR(200))+'%''' 
					SET @Where =@Where+' or Slogan  LIKE ''%'+CAST(@keywords AS VARCHAR(200))+'%'''
					SET @Where =@Where+' ) '
				END
			--排序
			IF  @orderby =0
				BEGIN
					SET @Order= N' ORDER BY IsShowIndex DESC, CreateTime DESC '
				END
			ELSE 
				BEGIN
					SET @Order= N' ORDER BY IsShowIndex ASC, CreateTime ASC '
				END         --创建临时表
		 CREATE TABLE #data  (   RowNo int IDENTITY (0, 1) NOT NULL,   KeyID	int not null )
			SET @exsql=N'INSERT INTO #data(KeyID) SELECT  TeamId FROM t_Team_TeamList ' +@Where +@Order
			--SELECT @exsql 
			EXEC sp_executesql  @exsql
			
			SET @TotalCount = (SELECT COUNT(1) FROM #data)
		 
			SELECT * FROM dbo.t_Team_TeamList t1 JOIN  #data e  ON t1.TeamId=e.KeyID 
			WHERE e.RowNo >= @PageLowerBound AND e.RowNo <= @PageUpperBound
			ORDER BY e.RowNo ASC
		
    END
--第二种简单点的分业

CREATE  PROC p_PC_GetLeaveCommentsList
    @pageindex INT ,
    @pagesize INT ,
    @TotalCount INT OUTPUT
AS
    BEGIN
        SELECT @TotalCount=COUNT(0) FROM dbo.t_Comm_LeaveComments 
        ;WITH cte AS(
				SELECT RowNumber = ROW_NUMBER() OVER(ORDER BY CreateTS DESC ),* 
			   FROM  dbo.t_Comm_LeaveComments
        )
        SELECT * FROM cte
         WHERE RowNumber BETWEEN (@pageindex - 1) * @pageSize + 1 AND @pageindex * @pageSize
	ORDER BY RowNumber
    END

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Spring相关

mysql 查询当天、本周,本月,上一个月的数据

DATE_ADD(createTime,INTERVAL 1 DAY) 得到指定日期后一天的日期/把1改为任意数字就可以得到后N天的日期

7323
来自专栏Aox Lei

Mysql 分区介绍(二) —— RANGE分区

通过范围的方式进行分区, 为每个分区给出一定的范围, 范围必须是连续的并且不能重复, 使用VALUES LESS THAN操作符

971
来自专栏c#开发者

biztalk rosettanet 自定义 pip code

USE [BTARNDATA] GO /****** Object: StoredProcedure [dbo].[proc_GetActivityStatu...

27911
来自专栏云霄雨霁

数据更新语言DML

1570
来自专栏听雨堂

使用子查询时应当注意的

在一个查询中: UPDATE a SET a.scts = b.v1, a.YCYL = b.v2, a.YCSL = b.v3 FROM kfdbsyy a,...

23610
来自专栏landv

金蝶K/3 跟踪语句_业务单据

8422
来自专栏Netkiller

数据库安全·内容版本控制,撰改留痕

以下节选择《Netkiller Architect 手札》 地址 http://www.netkiller.cn/architect/ 接下来几周的话题是数据库...

3034
来自专栏腾讯云TStack专栏

Zabbix 分区优化

目前 zabbix 的数据主要存储在 history 和 trends 的2个表中,随着时间的推移,这两个表变得非常大,性能会非常差,影响监控的使用。对 MyS...

1.3K0
来自专栏康怀帅的专栏

MySQL 查找数据 SELECT

SELECT 字段1,字段2 FROM 表名; SELECT 表名.字段名 FROM 表名; 别名 SELECT 字段 AS 别名 FROM 表名; 偏移量 S...

2896
来自专栏Android知识点总结

SpringBoot-14-MyBatis预热篇,MySQL小结

新建一个测试表:将sword_insert_test中test_name赋值为sword表中id大于5的name

2071

扫码关注云+社区

领取腾讯云代金券