DELIMITER $$

USE `netschool`$$

DROP PROCEDURE IF EXISTS `fn_jk_GetCourses`$$

CREATE DEFINER=`root`@`%` PROCEDURE `fn_jk_GetCourses`(IN p_pageIndex INT, IN p_pageSize INT )
BEGIN
-- select p_Tid,p_Functionid,p_BeginTime,p_EndTime,p_pageIndex,p_pageSize;
-- 定义key字段临时表
DROP TABLE IF EXISTS _temptable_keyid; -- 删除临时表,如果存在
CREATE TEMPORARY TABLE _temptable_keyid
(
`CourseId` INT );
-- 构建动态的sql,输出关键字key的id集合
-- 查找条件
SET @SQL =' SELECT `CourseId` from `tb_cs_course` '; -- SET @SQL=CONCAT(@SQL, ' ORDER BY `ExName` DESC '); -- select @SQL;
-- 准备id记录插入到临时表
SET @SQL=CONCAT('insert into _temptable_keyid(`CourseId`) ', @SQL);
PREPARE stmt FROM @SQL;
EXECUTE stmt ;
DEALLOCATE PREPARE stmt;
-- 下面是输出
SELECT COUNT(*) AS RecordCount FROM _temptable_keyid; -- 计算记录的起点位置
SET @STARTPOINT = IFNULL((p_pageIndex-1)*p_pageSize,0); SET @SQL='select c.`CourseId`,`CourseName` AS `Name`,`GetSubject`(`SubjectId`) AS `Subject`,`GetGradeName`(`GradeId`) AS `Grade`,
`GetTeacherName`(`TeacherId`) AS Teacher,`GetKnowledgeNameByCourseid`(c.`CourseId`) AS Knowledge,`VideoCount`,`ExName` AS Image,`PicUrl` AS Poster
from `tb_cs_course` c inner join _temptable_keyid t on c.`CourseId`=t.`CourseId` '; SET @SQL=CONCAT(@SQL, ' limit ',@STARTPOINT,' , ',p_pageSize);
PREPARE stmt FROM @SQL;
EXECUTE stmt ;
DEALLOCATE PREPARE stmt;
DROP TABLE _temptable_keyid;
-- 给出实际查询的表
-- 结束
END$$ DELIMITER ;

会返回两个结果,一个是 RecordCount 行数  ,一个是真正的记录

那么怎么去读取这2个值呢?

 

public List<MGetXiaoWuHistory> GetMessageHistoryByPage(int functionId, string tId, string beginTime,string endTime, int pg, int pagesize,string key, ref int recordcount)
{
IDataReader rdr = DataProvider.Instance().GetMessageHistoryByPage(functionId, tId, beginTime, endTime, pg, key,pagesize);
List<MGetXiaoWuHistory> objArray = null;
if (rdr.Read())
{
recordcount = Convert.ToInt32(rdr["RecordCount"]);
} if (rdr.NextResult())
{
objArray = CBO.FillCollection<MGetXiaoWuHistory>(rdr);
}
return objArray; }

mysql 分页存储过程 一次返回两个记录集(行的条数,以及行记录),DataReader的Read方法和NextResult方法的更多相关文章

  1. Junit 注解 类加载器 .动态代理 jdbc 连接池 DButils 事务 Arraylist Linklist hashset 异常 哈希表的数据结构,存储过程 Map Object String Stringbufere File类 文件过滤器_原理分析 flush方法和close方法 序列号冲突问题

    Junit 注解 3).其它注意事项: 1).@Test运行的方法,不能有形参: 2).@Test运行的方法,不能有返回值: 3).@Test运行的方法,不能是静态方法: 4).在一个类中,可以同时定 ...

  2. EF Core 中DbContext不会跟踪聚合方法和Join方法返回的结果,及FromSql方法使用讲解

    EF Core中: 如果调用Queryable.Count等聚合方法,不会导致DbContext跟踪(track)任何实体. 此外调用Queryable.Join方法返回的匿名类型也不会被DbCont ...

  3. java中equals方法和hashcode方法的区别和联系,以及为什么要重写这两个方法,不重写会怎样

    一.在Object类中的定义为:public native int hashCode();是一个本地方法,返回的对象的地址值.但是,同样的思路,在String等封装类中对此方法进行了重写.方法调用得到 ...

  4. MYSQL分页存储过程及事务处理

    最近给客户做的一小系统是SQLSERVER的数据库,因为特殊原因要切换到MYSQL上去,切换数据库确实让人头疼的,SQLSERVER和MYSQL的存储过程还是有很大差别的,下面是我做切换时转换的MYS ...

  5. MYSQL分页存储过程及事务处理--转自peace

    MYSQL的分页过程,和事务处理的一个测试过程. /* --名称:MYSQL版查询分页存储过程 by peace 2013-8-14 --输入参数:@fields -- 要查询的字段用逗号隔开 --输 ...

  6. C# MySql分页存储过程的应用

    存储过程: 获取范围内的数据 DELIMITER $$ DROP PROCEDURE IF EXISTS `studb`.`GetRecordAsPage` $$ ),), ),)) BEGIN de ...

  7. Mysql常用sql语句(6)- limit 限制查询结果的条数

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 实际工作中,我们的数据表数据肯定都是万级别的,如 ...

  8. 调用MySql 分页存储过程带有输入输出参数

    Create PROCEDURE getuser ( IN pageIndex INT, IN pageSize INT, OUT count INT ) BEGIN )*pageSize; sele ...

  9. mysql分页存储过程一步一步实现

    1. CREATE DEFINER=`root`@`localhost` PROCEDURE `P_HoverTreePages`( ), ) , ), ), ), IN `SortType` INT ...

随机推荐

  1. 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

    // test14.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...

  2. 母函数入门笔记(施工中…

    定义:对于一个数列,它的母函数(即生成函数)为   为了对这个准确求值,我们设    举一个简单的例子 例1 对于数列 他的生成函数为 ,那么应用一下等比数列求和公式 这里由于 所以当时 那么   例 ...

  3. AlphaToCoverage solution

    After msaa output the alpha in ps remove clip in ps in blendstate add AlphaToCoverageEnable = TRUE - ...

  4. PHP对XML添加节点之appendChild()方法讲解

    问题如下:<b > <c>test</c> </b>我要在b节点里面添加一个子节点比如说加一个d节点,要实现成<b > <c>t ...

  5. C#委托及事件

    转载:http://www.cnblogs.com/warensoft/archive/2010/03/19/1689806.html C#委托及事件 在C#中,委托(delegate)是一种引用类型 ...

  6. Android Service 的一些笔记

    绑定服务: 用于间接调用服务里面的方法.如果调用者Activity被销毁了,服务也跟着销毁了,服务也会跟着销毁. 开启服务: 不可以调用服务里面的方法.如果调用者的Activity退出了,服务还会长期 ...

  7. 恢复被win7覆盖的Ubuntu Grub

    情景:本本装有Ubuntu 12.04 + Win7 32.重装Win7 64后,Ubuntu启动菜单被覆盖. 恢复的方法有多种,思路都一样.第一步,进入Linux环境:第二步.修改Grub使其重新覆 ...

  8. 查找数N二进制中1的个数(JS版 和 Java版)

    (function(){ function getOne(n) { var c = 0; for(var i = 0;i < 32;i ++){ if(((1 << i) & ...

  9. 重写equals()方法时,需要同时重写hashCode()方法

    package com.wangzhu.map; import java.util.HashMap; /** * hashCode方法的主要作用是为了配合基于散列的集合一起正常运行,<br/&g ...

  10. error: ‘for’ loop initial declarations are only allowed in C99 mode

    比如写出下面这段程序: for (int i = 0; i < n; ++i) do_something(); 然后用gcc编译,会报 ‘for’ loop initial declaratio ...