[mysql学习]存储过程分页-代码

合集下载

SQLserver分页的4种方法示例(很全面)

SQLserver分页的4种方法示例(很全面)

SQLserver分页的4种⽅法⽰例(很全⾯)这篇博客讲的是SQL server的分页⽅法,⽤的SQL server 2012版本。

下⾯都⽤pageIndex表⽰页数,pageSize表⽰⼀页包含的记录。

并且下⾯涉及到具体例⼦的,设定查询第2页,每页含10条记录。

⾸先说⼀下SQL server的分页与MySQL的分页的不同,mysql的分页直接是⽤limit (pageIndex-1),pageSize就可以完成,但是SQL server 并没有limit关键字,只有类似limit的top关键字。

所以分页起来⽐较⿇烦。

SQL server分页我所知道的就只有四种:三重循环;利⽤max(主键);利⽤row_number关键字,offset/fetch next关键字(是通过搜集⽹上的其他⼈的⽅法总结的,应该⽬前只有这四种⽅法的思路,其他⽅法都是基于此变形的)。

要查询的学⽣表的部分记录⽅法⼀:三重循环思路先取前20页,然后倒序,取倒序后前10条记录,这样就能得到分页所需要的数据,不过顺序反了,之后可以将再倒序回来,也可以不再排序了,直接交给前端排序。

还有⼀种⽅法也算是属于这种类型的,这⾥就不放代码出来了,只讲⼀下思路,就是先查询出前10条记录,然后⽤not in排除了这10条,再查询。

代码实现-- 设置执⾏时间开始,⽤来查看性能的set statistics time on ;-- 分页查询(通⽤型)select *from (select top pageSize *from (select top (pageIndex*pageSize) *from studentorder by sNo asc ) -- 其中⾥⾯这层,必须指定按照升序排序,省略的话,查询出的结果是错误的。

as temp_sum_studentorder by sNo desc ) temp_orderorder by sNo asc-- 分页查询第2页,每页有10条记录select *from (select top 10 *from (select top 20 *from studentorder by sNo asc ) -- 其中⾥⾯这层,必须指定按照升序排序,省略的话,查询出的结果是错误的。

如何在MySQL中实现数据分页与排序

如何在MySQL中实现数据分页与排序

如何在MySQL中实现数据分页与排序在现代数据库应用中,数据分页和排序是非常常见且重要的功能。

无论是在网页应用中的数据展示,还是在后台管理系统中的数据查看,都需要对数据进行分页和排序操作。

而MySQL作为一种常用的关系型数据库管理系统,提供了丰富的功能来满足这些需求。

本文将详细讨论如何在MySQL中实现数据分页与排序的方法和技巧。

一、数据分页1. 使用LIMIT和OFFSET实现简单分页在MySQL中,可以使用LIMIT和OFFSET关键字来实现简单的数据分页。

LIMIT用于指定每页显示的记录数,OFFSET用于指定从第几条记录开始显示。

例如,要获取第1页的10条记录,可以使用以下SQL语句:SELECT * FROM table_name LIMIT 10 OFFSET 0;其中table_name是要查询的表名,0表示第一页。

假设要获取第2页的数据,只需将OFFSET的值设置为10:SELECT * FROM table_name LIMIT 10 OFFSET 10;这样就可以获取第2页的数据了。

2. 使用LIMIT和OFFSET实现动态分页除了上述静态分页的方式,我们还经常需要实现动态分页的功能,即根据用户的需求进行灵活的分页操作。

在这种情况下,可以使用变量来动态计算LIMIT和OFFSET的值。

以下是一个示例:SET @pageNumber = 2;SET @pageSize = 10;SET @offset = (@pageNumber - 1) * @pageSize;SELECT * FROM table_name LIMIT @pageSize OFFSET @offset;在这个示例中,我们首先设置了页码、每页显示的记录数和偏移量的变量。

然后,通过计算偏移量和LIMIT的值,就可以获取对应页码的数据了。

3. 使用ROW_NUMBER函数实现高级分页在MySQL 8.0及以上版本中,可以使用ROW_NUMBER函数来实现更高级的分页功能。

mysql存储过程

mysql存储过程

mysql存储过程MySQL存储过程1. 存储过程简介我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(StoredProcedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。

一个存储过程是一个可编程的函数,它在数据库中创建并保存。

它可以有SQL 语句和一些特殊的控制结构组成。

当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。

数据库中的存储过程可以看做是对编程中面向对象方法的模拟。

它允许控制数据的访问方式。

存储过程通常有以下优点:(1).存储过程增强了SQL语言的功能和灵活性。

存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。

(2).存储过程允许标准组件是编程。

存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。

而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。

(3).存储过程能实现较快的执行速度。

如果某一操作包含大量的Transaction-SQL 代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。

因为存储过程是预编译的。

在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。

而批处理的Transaction-SQL 语句在每次运行时都要进行编译和优化,速度相对要慢一些。

(4).存储过程能过减少网络流量。

针对同一个数据库对象的操作(如查询、修改),如果这一操作所涉及的Transaction-SQL语句被组织程存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而大大增加了网络流量并降低了网络负载。

(5).存储过程可被作为一种安全机制来充分利用。

系统管理员通过执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。

数据库分页SQL语句

数据库分页SQL语句

数据库分页SQL语句博客分类:数据库数据库分页语句SQL Server--------------------------------------------------------------------------------- 从数据库表中的第M条记录开始取N条记录,利用Top关键字:注意如果Select语句中既有top,又有order by,则是从排序好的结果集中选择:SELECT *FROM ( SELECT Top N *FROM (SELECT Top (M + N - 1) * FROM 表名称 Order by 主键 desc) t1 ) t2 Order by 主键 asc例如从表Sys_option(主键为sys_id)中从10条记录还是检索20条记录,语句如下:SELECT *FROM ( SELECT TOP 20 *FROM (SELECT TOP 29 * FROM Sys_option order by sys_id desc) t1) t2Order by sys_id ascOralce数据库--------------------------------------------------------------------------------从数据库表中第M条记录开始检索N条记录SELECT *FROM (SELECT ROWNUM r,t1.* From 表名称 t1 where rownum < M + N) t2where t2.r >= M例如从表Sys_option(主键为sys_id)中从10条记录还是检索20条记录,语句如下:SELECT *FROM (SELECT ROWNUM R,t1.* From Sys_option where rownum < 30 ) t2Where t2.R >= 10如果你对Oracle数据库分页不是很熟悉的话,本页后面有专门对Oracle分页技术的讲解。

MySQL中的数据分页与分块处理技巧

MySQL中的数据分页与分块处理技巧

MySQL中的数据分页与分块处理技巧在Web开发中,我们经常需要处理大量的数据并进行展示。

而对于大数据集来说,如果一次性加载全部数据,会导致页面加载速度变慢,用户体验不佳。

为了解决这个问题,常用的方法是将数据进行分页展示或者分块处理。

这篇文章将介绍在MySQL中实现数据分页与分块处理的技巧。

一、数据分页的基本原理数据分页是将大量的数据按照一定的数量进行分割,每次只加载一页的数据展示给用户。

以一个订单表为例,假设有10000个订单数据,需要分页展示,每页显示10条数据。

那么,首先需要确定页数,即总订单数/每页数量。

然后,根据当前页码来确定需要查询的数据的起始位置。

最后,使用LIMIT关键字来限制查询结果的数量。

二、MySQL中的分页查询在MySQL中实现数据分页可以使用LIMIT关键字来进行分页查询。

LIMIT关键字的功能是:通过指定偏移量和需要加载的行数来限制查询结果。

例如,查询订单表中从第11行开始的10条数据,可以使用以下SQL语句:```SELECT * FROM order_tableLIMIT 10 OFFSET 10;```其中,LIMIT 10表示需要加载的行数,OFFSET 10表示偏移量,即起始位置为第11行。

对于分页查询来说,还需要处理边界情况,如当页码小于1时,将其设置为1;当页码大于总页数时,将其设置为总页数。

三、MySQL中的数据分块处理除了数据分页,有时候我们需要对大数据集进行分块处理。

分块处理是将大数据集按照一定的大小进行分割,每次处理一块数据,以提高效率。

在MySQL中,分块处理可以通过设置循环进行数据处理和控制处理的块大小来实现。

以下是一个示例代码:```SET @block_size = 1000;SET @total_rows = (SELECT COUNT(*) FROM big_table);SET @total_blocks = CEIL(@total_rows/@block_size);SET @current_block = 0;WHILE @current_block < @total_blocks DOSET @offset = @current_block * @block_size;SET @current_block = @current_block + 1;-- 在这里进行数据处理和操作SELECT * FROM big_tableLIMIT @block_size OFFSET @offset;END WHILE;```在上述代码中,我们通过设置变量来分别记录块的大小、总行数、总块数和当前块的位置。

MySQL动态SQL的拼接以及执行、分页

MySQL动态SQL的拼接以及执行、分页

MySQL 动态SQL 的拼接以及执⾏、分页1:建⽴存储过程,标记参数2:先打印出sql字符串,判断是否是理想值3:⼲掉注释,执⾏sql 语句,看结果CREATE DEFINER =`root`@`localhost` PROCEDURE `pos_get_drugInList`(IN page integer ,IN limitz integer ,IN drugCodez VARCHAR (50),IN effectDatez VARCHAR (50),IN chainIdz VARCHAR (19))BEGINDECLARE start integer ;set start = (page -1)*limitz;set @sql = 'select * from dsos_vot_drugrecord where 1 = 1';#获取药品信息(最多⼀千条)if drugCodez <> '' thenset @sql = CONCAT(@sql ,' and drugCode= ',drugCodez);end if ;if effectDatez <> '' thenset @sql = CONCAT(@sql,' and effectDate= ','''',effectDatez,'''');end if ;if chainIdz <> '' thenset @sql = CONCAT(@sql ,' and chainId= ',chainIdz);end if ;set @sql = CONCAT(@sql ,' limit ',start,', ',limitz);-- PREPARE distSQL FROM @SQL ;-- EXECUTE distSQL;-- DEALLOCATE PREPARE distSQL ;select @sql ;ENDCREATE DEFINER =`root`@`localhost` PROCEDURE `pos_get_drugInList`(IN page integer ,IN limitz integer ,IN drugCodez VARCHAR (50),IN effectDatez VARCHAR (50),IN chainIdz VARCHAR (19))BEGINDECLARE start integer ;set start = (page -1)*limitz;set @sql = 'select * from dsos_vot_drugrecord where 1 = 1';#获取药品信息(最多⼀千条)if drugCodez <> '' thenset @sql = CONCAT(@sql ,' and drugCode= ',drugCodez);end if ;if effectDatez <> '' thenset @sql = CONCAT(@sql,' and effectDate= ','''',effectDatez,'''');end if ;if chainIdz <> '' then4:结果set @sql = CONCAT(@sql ,' and chainId= ',chainIdz); end if ;set @sql = CONCAT(@sql ,' limit ',start,', ',limitz);PREPARE distSQL FROM @SQL ;EXECUTE distSQL;DEALLOCATE PREPARE distSQL ;#select @sql ;END。

mysql5.7存储过程写法总结

mysql5.7存储过程写法总结

MySQL 5.7 存储过程是一种在数据库中执行的预编译代码块,用于执行一系列操作。

以下是MySQL 5.7 存储过程的一些常见写法和总结:创建存储过程:sqlCREATE PROCEDURE procedure_name ([parameters])BEGIN-- 存储过程的逻辑代码END;参数定义:IN 参数:用于向存储过程传递值。

OUT 参数:用于从存储过程返回值。

INOUT 参数:既可以向存储过程传递值,也可以从存储过程返回值。

示例:sqlCREATE PROCEDURE example_procedure(IN param1 INT, OUT param2 VARCHAR(255)) BEGIN-- 存储过程的逻辑代码END;变量声明和使用:在存储过程中,可以使用 DECLARE 语句声明变量,并使用 SET 或 SELECT 语句为变量赋值。

示例:sqlDECLARE variable_name datatype;SET variable_name = value;-- 或者SELECT column_name INTO variable_name FROM table_name WHERE condition;控制流语句:MySQL 5.7 存储过程支持各种控制流语句,如 IF、CASE、LOOP、WHILE 等。

示例:sqlIF condition THEN-- 执行逻辑代码ELSEIF another_condition THEN-- 执行其他逻辑代码ELSE-- 执行默认逻辑代码END IF;错误处理:可以使用 DECLARE 语句声明错误处理程序,并在存储过程中使用 SIGNAL 或 RESIGNAL 语句引发或重新引发错误。

示例:sqlDECLARE CONTINUE HANDLER FOR SQLEXCEPTIONBEGIN-- 错误处理逻辑代码END;游标:游标用于在存储过程中遍历查询结果集。

MySql分页sql语句

MySql分页sql语句

MySql分页sql语句如果和MSSQL的TOP语法相比,那么MySQL的LIMIT语法要显得优雅了许多。

使用它来分页是再自然不过的事情了。

最基本的分页方式:SELECT ... FROM ... WHERE ... ORDER BY ... LIMIT ...在中小数据量的情况下,这样的SQL足够用了,唯一需要注意的问题就是确保使用了索引:举例来说,如果实际SQL类似下面语句,那么在category_id, id两列上建立复合索引比较好:SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT 50, 10子查询的分页方式:随着数据量的增加,页数会越来越多,查看后几页的SQL就可能类似:SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT 10000, 10一言以蔽之,就是越往后分页,LIMIT语句的偏移量就会越大,速度也会明显变慢。

此时,我们可以通过子查询的方式来提高分页效率,大致如下:1,2,3,4,5,6,7,8,9,1011,12,13,14,15,16,17,18,19,2021,22,23,24,25,26,27,28,29,301001,1002.。

10001,10002。

SELECT * FROM articles WHERE id >= (SELECT id FROM articles ORDER BY id LIMIT 10, 1) LIMIT 10JOIN分页方式SELECT * FROM `content` AS t1JOIN (SELECT id FROM `content` ORDER BY id desc LIMIT ".($page-1)*$pagesize.", 1)AS t2 WHERE t1.id <= t2.id ORDER BY t1.id desc LIMIT $pagesize;经过我的测试,join分页和子查询分页的效率基本在一个等级上,消耗的时间也基本一致。

MySQL存储过程实例教程

MySQL存储过程实例教程

MySQL存储过程实例教程MySQL 5.0以后的版本开始支持存储过程,存储过程具有一致性、高效性、安全性和体系结构等特点,本节将通过具体的实例讲解PHP是如何操纵MySQL存储过程的。

1:存储过程的创建这是一个创建存储过程的实例实例说明为了保证数据的完整性、一致性,提高应用的性能,常采用存储过程技术。

MySQL 5.0之前的版本并不支持存储过程,随着MySQL技术的日趋完善,存储过程将在以后的项目中得到广泛的应用。

本实例将介绍在MySQL 5.0以后的版本中创建存储过程。

技术要点一个存储过程包括名字、参数列表,以及可以包括很多SQL语句的SQL语句集。

下面为一个存储过程的定义过程: create procedure proc_name (in parameterinteger)begindeclare variable varchar(20);if parameter=1 thensetvariable='MySQL';elseset variable='PHP';end if;insert into tb (name) values (variable);end;MySQL中存储过程的建立以关键字create procedure开始,后面紧跟存储过程的名称和参数。

MySQL的存储过程名称不区分大小写,例如PROCE1()和proce1()代表同一个存储过程名。

存储过程名不能与MySQL数据库中的内建函数重名。

存储过程的参数一般由3部分组成。

第一部分可以是in、out或inout。

in表示向存储过程中传入参数;out表示向外传出参数;inout表示定义的参数可传入存储过程,并可以被存储过程修改后传出存储过程,存储过程默认为传入参数,所以参数in可以省略。

第二部分为参数名。

第三部分为参数的类型,该类型为MySQL数据库中所有可用的字段类型,如果有多个参数,参数之间可以用逗号进行分割。

如何在MySQL中使用游标实现数据分页

如何在MySQL中使用游标实现数据分页

如何在MySQL中使用游标实现数据分页引言:在web开发中,数据分页是非常常见的需求。

通过将数据分块显示在不同的页面中,可以提高用户体验和系统性能。

而MySQL提供了游标(Cursor)的功能,可以灵活地实现数据分页。

本文将介绍如何在MySQL中使用游标实现数据分页,并探讨其实现原理。

一、什么是游标?游标是一种数据库操作方式,它允许用户在一次查询中逐行处理结果集。

在MySQL中,游标可以用于在存储过程或函数中对结果集进行操作。

二、为什么使用游标实现数据分页?在MySQL中,常见的数据分页方式是使用LIMIT关键字。

但是,使用LIMIT关键字在处理大规模数据时会存在性能问题。

当数据量较大时,LIMIT会对整个结果集进行排序和计算,然后再返回指定的数据。

而使用游标可以逐行获取结果集,无需对整个结果集进行排序和计算,从而减少了系统资源的消耗,提高了查询效率。

三、使用游标实现数据分页的步骤1. 定义游标:首先,需要在存储过程或函数中定义一个游标。

游标包含了查询结果集以及对结果集进行操作的一些方法。

2. 打开游标:在定义游标之后,需要使用OPEN语句打开游标,以便可以查看和操作游标中的数据。

3. 遍历游标:使用FETCH语句遍历游标中的数据。

FETCH语句可以根据需要获取游标中的一行或多行数据。

4. 关闭游标:在使用完游标之后,需要使用CLOSE语句关闭游标,释放资源。

四、示例代码下面是一个使用游标实现数据分页的示例代码:```DELIMITER $$CREATE PROCEDURE `sp_paging`(IN pageIndex INT, IN pageSize INT, OUT resultRowCount INT, OUT resultPageCount INT)BEGIN-- 定义变量DECLARE rowStart INT;DECLARE rowEnd INT;DECLARE totalCount INT;SET rowStart = (pageIndex - 1) * pageSize;SET rowEnd=rowStart + pageSize;-- 定义游标DECLARE cur CURSOR FORSELECT * FROM your_table_name LIMIT rowStart, pageSize;-- 打开游标OPEN cur;-- 获取结果集的总行数SELECT COUNT(*) INTO totalCount FROM your_table_name;-- 计算页数SET resultRowCount = totalCount;SET resultPageCount = CEIL(totalCount / pageSize);-- 遍历游标FETCH cur;-- 关闭游标CLOSE cur;END$$DELIMITER ;```五、使用示例在存储过程被创建后,可以通过调用存储过程来实现数据分页。

mysql分页原理和高效率的mysql分页查询语句_Mysql

mysql分页原理和高效率的mysql分页查询语句_Mysql

第二部分:根据雅虎的几位工程师带来了一篇Efficient Pagination Using MySQL的报告内容扩展:在文中提到 一种clue的做法,给翻页提供一些线索,比如还是SELECT * FROM message ORDER BY id DESC,按id降序分 页,每页20条,当前是第10页,当前页条目id最大的是1020,最小的是1000,如果我们只提供上一页、下一 页这样的跳转(不提供到第N页的跳转),那么在处理上一页的时候SQL语句可以是:
如果LIMIT m,n不可避免的话,要优化效率,只有尽可能的让m小一下,我们扩展前面的clue做法,还是SELE CT * FROM message ORDER BY id DESC,按id降序分页,每页20条,当前是第10页,当前页条目id最大的是 2519,最小的是2500;
当是第10页的SQL如下: 代码如下:
mysql分页原理和高效率的mysql分页查询语句_Mysql_脚本之家 脚 本 之 家
首页 网页制作 脚本专栏 脚本下载 网络编程 数据库 CMS教程 电子书籍 平面设计 媒体动画 操作系统 网站运营 网络安全
MsSql Mysql Access oracle DB2 mssql2008 mssql2005 SQLite PostgreSQL MongoDB Redis 数据库文摘 数据库其它
2013-12-12 2014-03-03 2010-12-12 2013-10-10 2013-03-03 2013-06-06 2014-07-07 2011-10-10 2013-01-01 2010-07-07
文章评论 社交帐号登录:
微博
QQ
人人
豆瓣 更多»
0条评论
还没有评论,沙发等你来抢

MySQL存储过程的深入讲解(in、out、inout)

MySQL存储过程的深入讲解(in、out、inout)

MySQL存储过程的深⼊讲解(in、out、inout)⼀、简介从 5.0 版本才开始⽀持,是⼀组为了完成特定功能的SQL语句集合(封装),⽐传统SQL速度更快、执⾏效率更⾼。

存储过程的优点1、执⾏⼀次后,会将⽣成的⼆进制代码驻留缓冲区(便于下次执⾏),提⾼执⾏效率2、SQL语句加上控制语句的集合,灵活性⾼3、在服务器端存储,客户端调⽤时,降低⽹络负载4、可多次重复被调⽤,可随时修改,不影响客户端调⽤5、可完成所有的数据库操作,也可控制数据库的信息访问权限为什么要⽤存储过程?1.减轻⽹络负载;2.增加安全性⼆、创建存储过程2.1 创建基本过程使⽤create procedure语句创建存储过程存储过程的主体部分,被称为过程体;以begin开始,以end$$结束#声明语句结束符,可以⾃定义:delimiter $$#声明存储过程create procedure 存储过程名(in 参数名参数类型)begin#定义变量declare 变量名变量类型#变量赋值set 变量名 = 值sql 语句1;sql 语句2;...end$$#恢复为原来的语句结束符delimiter ;(有空格)实例:mysql> delimiter $$mysql> create procedure text()-> begin-> select * from stu.a_player;-> end $$Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;调⽤存储过程call 存储过程名(实际参数);mysql> call text;+----+----------+-------+| id | name | score |+----+----------+-------+| 1 | zhangsan | 88 || 2 | lisi | 89 || 3 | wangwu | 67 || 4 | zhaoliu | 90 || 5 | xuli | 80 || 6 | keke | 75 |+----+----------+-------+6 rows in set (0.00 sec)删除存储过程mysql> drop procedure text;2.2 存储过程的参数MySQL存储过程的参数⽤在存储过程的定义,共有三种参数类型,IN,OUT,INOUT,形式如:CREATEPROCEDURE 存储过程名([[IN |OUT |INOUT ] 参数名数据类形...])IN 输⼊参数:表⽰调⽤者向过程传⼊值(传⼊值可以是字⾯量或变量)OUT 输出参数:表⽰过程向调⽤者传出值(可以返回多个值)(传出值只能是变量)INOUT 输⼊输出参数:既表⽰调⽤者向过程传⼊值,⼜表⽰过程向调⽤者传出值(值只能是变量)传递参数实例:INmysql> create procedure test1(in in_id int(2))-> begin-> select * from stu.a_player where id=in_id;-> end $$Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;#将4传递给in_id变量,执⾏事务mysql> call test1(4);+----+---------+-------+| id | name | score |+----+---------+-------+| 4 | zhaoliu | 90 |+----+---------+-------+1 row in set (0.00 sec)#将6传递给in_id变量,执⾏事务mysql> call test1(6);+----+------+-------+| id | name | score |+----+------+-------+| 6 | keke | 75 |+----+------+-------+1 row in set (0.00 sec)OUTmysql> delimiter $$mysql> create procedure test2(out aa int)-> begin-> select aa;-> set aa=2;-> select aa;-> end $$Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;#将@aa变量传递给test2 事务mysql> call test2(@aa);+------+| aa |+------+| NULL |+------+#out向调⽤者输出参数,不接收输⼊的参数,所以aa为null1 row in set (0.00 sec)+------+| aa |+------+| 2 |+------+事务将aa变量设置为2(设置的是全局),则可进⾏输出1 row in set (0.00 sec)Query OK, 0 rows affected (0.00 sec)mysql> select @aa;+------+| @aa |+------+| 2 |+------+1 row in set (0.00 sec)#事务外查询变量,已经被修改IN 、OUT、 INOUT 对⽐mysql> delimiter //mysql> create procedure test3(in num1 int,out num2 int,inout num3 int)-> begin-> select num1,num2,num3;-> set num1=10,num2=20,num3=30;-> select num1,num2,num3;-> end //Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;mysql> call test3(@num1,@num2,@num3);+------+------+------+| num1 | num2 | num3 |+------+------+------+| 1 | NULL | 3 |+------+------+------+1 row in set (0.00 sec)+------+------+------+| num1 | num2 | num3 |+------+------+------+| 10 | 20 | 30 |+------+------+------+1 row in set (0.00 sec)Query OK, 0 rows affected (0.00 sec)in和inout参数会将全局变量的值传⼊存储过程中,⽽out参数不会将全局变量的值传⼊存储过程中。

利用SQL语句实现分页

利用SQL语句实现分页

利⽤SQL语句实现分页1.概述在⽹页中如果显⽰的数据太多就会占据过多的页⾯,⽽且显⽰速度也会很慢。

为了控制每次在页⾯上显⽰数据的数量,就可以利⽤分页来显⽰数据。

2.技术要点在SQL Server中要实现SQL分页,需要使⽤⼦查询来获取上⼀页的数据进⾏对⽐,进⽽获取最新的数据。

使⽤⼦查询获取分页数据的语法格式如下:"SELECT TOP [pageSize] * FROM [table] WHERE id NOT IN(SELECT TOP [preNum] id FROM [table] ORDER BY ID DESC) ORDER BY ID DESC";a. pageSize:数据分页的分页⼤⼩。

b. preNum:上⼀页数据查询的起始范围。

c. table:数据表名称。

例如要从数据库的第10条数据开始查询5条数据,编写的 SQL查询语句如下:"SELECT TOP 5 * FROM tb_SQLServerFenye WHERE id NOT IN(SELECT TOP 10 id FROM tb_SQLServerFenye ORDER BY ID DESC) ORDER BY ID DESC";在JDBCDao数据库操作类的getPageArgs()⽅法中就使⽤getProducts()⽅法中就使⽤了该语法获取指定页码的分页数据,关键代码如下:// 定义查询数据库的SQL语句String sql = "SELECT TOP " + pageSize + " * FROM tb_SQLServerFenye" +" WHERE id NOT IN(SELECT TOP " + (page - 1) * pageSize + " id FROM" +" tb_SQLServerFenye ORDER BY ID DESC) ORDER BY ID DESC";stmt = conn.createStatement();rs = stmt.executeQuery(sql); // 执⾏SQL并获取查询结果集3.实现过程(1)创建操作数据库类UserDao。

配合dotNetFlexGrid的通用分页存储过程

配合dotNetFlexGrid的通用分页存储过程

通用分页存储过程1通用分页存储过程说明1.1存储过程名称:Common_Sp_Pagination1.2存储过程代码:ALTER PROC [dbo].[Common_Sp_Pagination]@StrSql VARCHAR(MAX),@PageIndex INT,--当前页码@PageCount INT,--每页条数@SortClause VARCHAR(100),--排序字段,不加“Order by”@Filter VARCHAR(200),--条件,可以为空,不加where@TotalNum INT OUTPUT--总记录条数ASDECLARE @ExeSql VARCHAR(MAX)DECLARE @OrderByStr VARCHAR(100)DECLARE @StartRowIndex INTDECLARE @EndRowIndex INTSET @StartRowIndex =( @PageIndex - 1 )* @PageCount + 1SET @EndRowIndex = @PageIndex * @PageCount/*--条件筛选--*/IF @Filter IS NOT NULLAND @Filter <>''BEGINSET @StrSql = @StrSql +' WHERE '+ @FilterEND/*--排序--*/IF @SortClause IS NOT NULLAND @SortClause <>''BEGINSET @OrderByStr =' order by '+ @SortClauseSET @ExeSql =' SELECT * FROM ('+ @StrSql+') AS A where rowIndex between '+CAST(@StartRowIndex AS VARCHAR) +' And '+CAST(@EndRowIndex AS VARCHAR)+' '+ @OrderByStrENDELSEBEGINSET @ExeSql =' SELECT * FROM ('+ @StrSql+') AS A where rowIndex between '+CAST(@StartRowIndex AS VARCHAR) +' And '+CAST(@EndRowIndex AS VARCHAR)+' 'ENDPRINT @StrSqlPRINT @ExeSql/*---查询总数-*/CREATE TABLE #temp ( TotalNum INT)DECLARE @InsertTemp VARCHAR(max)SET@InsertTemp ='insert into #temp select count(*) from ('+@StrSql +') as A'--PRINT @InsertTempEXEC(@InsertTemp)SELECT @TotalNum = TotalNumFROM #tempDROP TABLE #temp/*--查询分页信息--*/EXEC(@ExeSql)2举例说明:2.1该例子是在CMS_INFO_SelectCmsInfoByInfoClassIdForPage存储过程中调用通用的分页存错过程Common_Sp_Pagination,实现根据栏目编号分页获取栏目信息2.2主调用存储过程代码CREATE PROC [dbo].[CMS_INFO_SelectCmsInfoByInfoClassIdForPage]@InfoClassId VARCHAR(50),--所属栏目编号@CurrentPage INT,--当前页码@PageSize INT,--每页记录数量@SortClause VARCHAR(2000),--不加'ORDER BY' 的排序语句@TotalNum INT OUTPUT-- 总记录数量ASIF @SortClause IS NULLOR @SortClause =''BEGINSET @SortClause ='CreateDateTime desc'ENDDECLARE @StrSql VARCHAR(2000)SET @StrSql ='SELECTInfoId ,InfoDelegate ,InfoMainTitle ,CreatePerson ,CreateDateTime ,STATUS,ROW_NUMBER() OVER ( ORDER BY '+ @SortClause+' ) AS rowIndexFROM ( SELECT InfoId ,InfoDelegate ,InfoMainTitle ,erName AS CreatePerson ,CONVERT(VARCHAR(10), A.CreateDateTime, 120) AS CreateDateTime ,CASE ( Status )WHEN ''0'' THEN ''草稿''WHEN ''1'' THEN ''有效''ELSE ''不知名状态''END AS StatusFROM dbo.CMS_INFO AS A WITH ( NOLOCK )LEFT JOIN dbo.ADMIN_USER AS B WITH ( NOLOCK ) ONa.CreatePerson =erPKIdWHERE InfoClassId = '''+ @InfoClassId +'''AND Status <> ''*'') AS A'EXEC mon_Sp_Pagination @StrSql, @CurrentPage, @PageSize, @SortClause,NULL, @TotalNum OUTPUT3注意事项3.1主调用存储过程的@StrSql中必须包含以下的语句,用户生成行号 ROW_NUMBER()OVER ( ORDER BY xxxx) AS rowIndex,其中’xxxx’为排序字段,该列可以放在查询字段的任意位置,为了配合华磊开发的新的dategrid,最好放在最后一列3.2如果在@StrSql中涉及到多表查询,并以“表名.字段名”来查询字段的,最好为该字段加上别名,同时在@SortClause中使用别名替代3.3在@SortClause中出现的字段必须在查询字段中存在。

如何使用MySQL的游标和存储过程处理分页查询

如何使用MySQL的游标和存储过程处理分页查询

如何使用MySQL的游标和存储过程处理分页查询MySQL是一种十分流行的开源关系型数据库管理系统,它以其性能高、易用性好等特点备受开发者青睐。

在实际应用中,我们经常会遇到需要处理分页查询的需求,而MySQL的游标和存储过程是两个强大的工具,能够帮助我们高效地处理这类问题。

本文将介绍如何使用MySQL的游标和存储过程来处理分页查询的相关内容。

一、什么是游标和存储过程在开始讨论如何使用MySQL的游标和存储过程处理分页查询之前,我们首先要了解游标和存储过程的概念。

游标是用于遍历结果集的一种机制,它允许我们按一定的顺序逐个访问查询结果。

MySQL的游标类型有两种:隐式游标和显式游标。

隐式游标是MySQL内部自动维护的,无需我们手动处理;而显式游标需要我们自己定义、打开、关闭和管理。

存储过程是一段预编译的程序,可以存储在数据库中并在需要时被调用执行,它可以包含一系列的SQL语句、控制流程语句和变量定义等。

存储过程能够提高执行效率、简化应用程序的开发和维护工作。

二、分页查询的基本原理在了解了游标和存储过程的基本概念之后,我们要先明确分页查询的基本原理。

分页查询是一种将查询结果按照固定的页数和每页显示的记录数进行划分的方式,常见的分页查询方式有两种:基于LIMIT和OFFSET的分页和基于游标的分页。

基于LIMIT和OFFSET的分页是一种常见的实现方式,通过在查询语句中使用LIMIT和OFFSET来限制返回结果的行数和起始位置。

通过调整LIMIT和OFFSET的值,可以实现不同页数的查询。

例如,LIMIT 10 OFFSET 0表示查询第1页的结果,LIMIT 10 OFFSET 10表示查询第2页的结果。

基于游标的分页是较为高级和灵活的实现方式,它通过游标来逐个地获取结果集中的记录。

游标可以根据需要进行上下滚动、跳转和过滤等操作,对于大结果集的处理更加高效。

以上是分页查询的基本原理,接下来我们将具体介绍如何使用MySQL的游标和存储过程来处理分页查询。

基于存储过程的数据快速分页方法

基于存储过程的数据快速分页方法
第7 第 1 期 卷 2
20 年 l 08 2月
软 件 导 刊
So. 1 N0.2 7 1 De . 0 8 c2o
基于存储 过程 的数据快速分页方法
陈焕 通 . 尧妃 陈
( 华职 业技 术 学院 信 息工程 学 院 , 金 浙江 金 华 3 10 ) 2 0 7
d cae@s T v e a( ) el r t mp a hl 10 r r "1
d cae@s O d r ac a(0 elr t re r h 4 0) r v r
i f@d C u t!= 0 oon
b gn e i
主语句
以后 可 以得 到几 大 对象 : o n ci 、 o C n et n C mma d e ode。在 o n 和R crst 传统 的分 页技术 中 . 是利 用R c rst 象一 次性 地将 数据 库 就 e ode对 中所 有 符合 查 询条 件 的记 录读 入 。 放 在 内存 中 。 种 一次 性 存 这 就将 用户需 要 的数据 全部 交付 给用 户 的方 法是 不 明智 的 , 主要
@tm T be- ” hr + t ee e p a l 4 ]w ee” @s Wh r - r
es le
般 先 会作 一 个 比较模 糊 的查 询 , 再从 中细化 和 挑选 ; 很 多 ②
情况 下用 户并 没有 耐心浏 览完 所有 符合要 求 的数据 , 比如访 问 论坛 留言 。 户 常 常一 开始 兴致 勃 勃 , 浏 览 了一两 页 以后很 用 可
i O d r y e != 0 f@ r e T p
b gn e i
作者 简介 : 陈焕通 (9 5 , , 江乐 清人 , 士 , 华职 业技 术 学 院信 息工 程 学 院讲 师 , 究方 向为 数据 库技 术 ; 1 7 -) 男 浙 硕 金 研 陈尧妃 (9 8 ) 女 , 江上 虞 17 一 , 浙 人 , 华 职 业 技 术 学 院 信 息 工 程 学 院讲 师 , 究 方 向 为 数 据 库 技 术 。 金 研

mysql的存储过程和函数

mysql的存储过程和函数

mysql的存储过程和函数MySQL的存储过程和函数是数据库中非常重要的两个概念,它们可以帮助我们更加高效地管理和操作数据库。

在本文中,我们将详细介绍MySQL的存储过程和函数,包括它们的定义、使用方法以及优缺点等方面。

一、MySQL的存储过程1. 定义MySQL的存储过程是一组预编译的SQL语句,它们被存储在数据库中,并可以被多次调用。

存储过程可以接受参数,并且可以返回结果集或者输出参数。

2. 使用方法创建存储过程的语法如下:CREATE PROCEDURE procedure_name ([IN|OUT|INOUT] parameter_name data_type [, ...])BEGIN-- 存储过程的SQL语句END;其中,procedure_name是存储过程的名称,parameter_name是存储过程的参数名称,data_type是参数的数据类型。

IN表示输入参数,OUT表示输出参数,INOUT表示既是输入参数又是输出参数。

调用存储过程的语法如下:CALL procedure_name ([parameter_value, ...]);其中,procedure_name是存储过程的名称,parameter_value是存储过程的参数值。

3. 优缺点存储过程的优点在于:(1)提高了数据库的性能,因为存储过程是预编译的,可以减少SQL语句的解析和编译时间。

(2)提高了数据库的安全性,因为存储过程可以控制对数据库的访问权限。

(3)提高了代码的可维护性,因为存储过程可以被多次调用,可以减少代码的重复性。

存储过程的缺点在于:(1)需要学习存储过程的语法和使用方法。

(2)存储过程的调试和测试比较困难。

二、MySQL的函数1. 定义MySQL的函数是一段预编译的代码,它们可以接受参数,并且可以返回一个值。

函数可以被多次调用,并且可以嵌套使用。

2. 使用方法创建函数的语法如下:CREATE FUNCTION function_name ([parameter_name data_type [, ...]])RETURNS return_typeBEGIN-- 函数的SQL语句END;其中,function_name是函数的名称,parameter_name是函数的参数名称,data_type是参数的数据类型,return_type是函数的返回值类型。

MyBatis之四:调用存储过程含分页、输入输出参数

MyBatis之四:调用存储过程含分页、输入输出参数

MyBatis之四:调⽤存储过程含分页、输⼊输出参数 在前⾯分别讲解了通过mybatis执⾏简单的增删改,多表联合查询,那么⾃然不能缺少存储过程调⽤,⽽且还带分页功能。

注意:表结构参见上篇讲解联合查询的表。

⼀、查询某班级以及该班级下⾯所有学⽣的记录 上⾯这个查询可以⽤sql语句表⽰为:select c.class_id,c.class_name,s.s_id,s.s_namefrom Class c left join ClassStudent cson c.class_id = cs.class_idleft join Student son cs.student_id = s.s_idwhere c.class_id =1 查询出来的结果是: 那么如果这个班级⾥⾯学⽣超级多,要通过分页查询,并且⽤存储过程该怎么通过mybatis调⽤了 ⼆、在sql2008r2⾥⾯新建⼀个分页查询的存储过程,如下create proc[dbo].[SP_PAGE_GetClassStudent](@ClassID int, --班级编码@PageSize int, --每页显⽰多少条@PageIndex int , --查询第多少页@PageCount int output, --总页数输出@RecordCount int output --总记录数输出)asbegindeclare@startIndex intdeclare@endIndex intdeclare@sqlString varchar(4000)declare@QueryPageSql nvarchar(4000)declare@QueryCountString nvarchar(4000)--1、拼接sql语句SET@sqlString='(select *,ROW_NUMBER() over (order by t.s_id) as rowIdfrom (select c.class_id,c.class_name,s.s_id,s.s_namefrom Class c left join ClassStudent cson c.class_id = cs.class_idleft join Student son cs.student_id = s.s_idwhere c.class_id = '+str(@ClassID)+')t) temp'--2、计算总页数,总记录数SET@QueryCountString='select @RecordCount=count(1),@PageCount=CEILING((COUNT(1)+0.0)/'+CAST(@PageSize AS NVARCHAR)+') from '+@SqlString ;--PRINT(@QueryCountString)EXEC SP_EXECUTESQL @QueryCountString,N'@RecordCount int output,@PageCount int output',@RecordCount output,@PageCount output--3、判断输⼊的当前页数⼤于实际总页数,则把实际总页数赋值给当前页数IF@PageIndex>CEILING((@RecordCount+0.0)/@PageSize)BEGINSET@PageIndex=CEILING((@RecordCount+0.0)/@PageSize)ENDSET@startIndex=(@PageIndex-1)*@PageSize+1SET@endIndex=@PageIndex*@PageSize--4、执⾏分页查询SET@QueryPageSql='select * from '+@SqlString+' where rowId between '+str(@startIndex) +' and '+str(@endIndex);--PRINT(@QueryPageSql)EXEC (@QueryPageSql)end 不难看出,这个存储过程⼀共有5个参数,3个输⼊参数,2个输出参数,我们通过sql2008r2⾃带的⼯具执⾏这个存储过程,如下: 点击“确定”会在sql查询窗体中出现如下sql语句块:USE[mybatisDB]GODECLARE@return_value int,@PageCount int,@RecordCount intEXEC@return_value=[dbo].[SP_PAGE_GetClassStudent]@ClassID=1,@PageSize=2,@PageIndex=5,@PageCount=@PageCount OUTPUT,@RecordCount=@RecordCount OUTPUTSELECT@PageCount as N'@PageCount',@RecordCount as N'@RecordCount'SELECT'Return Value'=@return_valueGO 仔细⼀看,怎么多出了⼀个输出参数“@return_value”了,可是在设计存储过程的时候只有2个输出参数,此处先埋下伏笔。

mysql存储过程sql语句

mysql存储过程sql语句

mysql存储过程sql语句摘要:1.存储过程简介2.创建存储过程3.调用存储过程4.存储过程示例5.存储过程参数6.存储过程返回值7.存储过程错误处理8.总结正文:一、存储过程简介MySQL存储过程是一组预编译的SQL语句,它们在一起执行完成特定任务。

存储过程允许你封装复杂的逻辑、重复执行相同的操作,以及改善应用程序的性能。

在本文中,我们将介绍如何创建和使用存储过程。

二、创建存储过程创建存储过程的语法如下:```DELIMITER //CREATE PROCEDURE 存储过程名称(参数1 数据类型, 参数2 数据类型, ...)BEGIN// 编写SQL语句END //DELIMITER ;```例如,创建一个简单的存储过程,如下:```DELIMITER //CREATE PROCEDURE example_procedure(IN p1 INT, IN p2 VARCHAR(255))BEGINSELECT "Hello, World! " || p1 || " " || p2 AS result;END //DELIMITER ;```三、调用存储过程调用存储过程的语法如下:```CALL 存储过程名称(参数1, 参数2, ...);```例如,调用上面创建的存储过程:```CALL example_procedure(10, "World");```四、存储过程示例以下是一个完整的存储过程示例,用于查询用户信息并分页显示:```DELIMITER //CREATE PROCEDURE paginate_users(IN page_number INT)BEGINSET @start_row = (page_number - 1) * 10;SELECT * FROM users ORDER BY id LIMIT 10 OFFSET @start_row;END //DELIMITER ;```五、存储过程参数存储过程可以接受参数,这些参数在调用存储过程时传递。

mysql存储过程循环语句的创建和使用方法 -回复

mysql存储过程循环语句的创建和使用方法 -回复

mysql存储过程循环语句的创建和使用方法-回复MySQL存储过程是一种预先编译的SQL代码块,可以进行条件判断、循环操作等复杂的逻辑处理。

在MySQL中,使用存储过程可以提高数据库的性能和可维护性。

在本文中,我们将介绍如何创建和使用包含循环语句的MySQL存储过程。

具体来说,我们将分为以下几个步骤进行讲解:1. 存储过程的概述2. 创建存储过程3. 添加循环语句4. 循环语句的使用方法5. 示例和注意事项# 1. 存储过程的概述存储过程是在数据库中预先存储的一段SQL代码,可以被反复调用。

相比于每次执行一条SQL语句,使用存储过程可以减少网络开销,并且提供了更好的代码重用性和维护性。

MySQL中的存储过程使用BEGIN和END来定义代码块,并支持各种逻辑语句和控制结构,如条件判断、循环操作等。

在本文中,我们将着重介绍循环语句的创建和使用。

# 2. 创建存储过程在MySQL中,可以使用CREATE PROCEDURE语句来创建存储过程。

语法如下:CREATE PROCEDURE procedure_name ([parameter_list])BEGIN存储过程的代码块END;其中,`procedure_name`是存储过程的名称,在创建时需要注意确保名称的唯一性。

`parameter_list`是可选的参数列表,可以在存储过程中使用这些参数。

# 3. 添加循环语句在存储过程的代码块中,可以使用循环语句来执行重复的操作。

MySQL 中提供了两种常见的循环语句:WHILE和LOOP。

- WHILE循环用于在给定条件为真时重复执行一段代码块。

其语法如下:WHILE condition DO循环内的代码块END WHILE;- LOOP循环用于无条件地重复执行一段代码块,可以使用LEAVE语句来跳出循环。

其语法如下:loop_label: LOOP循环内的代码块IF condition THENLEAVE loop_label;END IF;END LOOP loop_label;值得注意的是,创建存储过程时,需要在代码块外部定义循环标签(可以是任何标识符),这样才能在循环内部使用LEAVE跳出循环。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SET @sumsql = contact('select ',_sumfields,' from ',_tables,CASE IFNULL(_where,'') WHEN '' THEN '' ELSE CONCAT(' where ',_where) END);
SELECT CONCAT('@sumsql==',@sumsql);
+-----------+
| --begin-- |
+-----------+
| --begin-- |
+-----------+
1 row in set
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
DELIMITER $$
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
PROCEDURE `cadb`.`Query_Pagination`(
IN _fields VARCHAR(2000),
IN _tables TEXT,
| 2 | 1 | INSP20140909111 | 进口测试商品 | 69373266589 | 2014-05-12 00:00:00 | 测试 | 测试 | 1 | INSP20140909111-1 |
| strsql==select sql_calc_found_rows @rowindex:=@rowindex+1 as rownumber,InspectID,InspectCode,ProductName,TypeID,InspectDate,InDistributors,InAgentor,Category, HsCode from inspect order by InspectID limit 0,3 |
OUT _totalcount INT ,
OUT _pagecount INT
)
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| 1 | -1 | 110040114000736 | 2011年拉抚庄园哈斯图干红葡萄酒 | 69373266589 | 2014-02-09 00:00:00 | 北京玖美电子商务有限公司 | 北京润和恒安国际贸易有限公司 | 1 | 2204210000 |
SELECT CONCAT('_totalcount==',_totalcount);
SELECT CONCAT('_pageSize==',_pageSize);
IF (_totalcount <= _pageSize) THEN
SET _pagecount = 1;
mysql> CALL Query_Pagination('InspectID,InspectCode,ProductName,TypeID,InspectDate,InDistributors,InAgentor,Category, HsCode','inspect','','InspectID',1,3,'',@_totalcount,@_pagecount);
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'*/
/*
--名称:MYSQL版查询分页存储过程 by peace 2013-8-14
--输入参数:@fields -- 要查询的字段用逗号隔开
--输入参数:@tables -- 要查询的表
3 rows in set
+-------------------------------------+
SELECT CONCAT('strsql==',@strsql);
PREPARE strsql FROM @strsql;
EXECUTE strsql;
DEALLOCATE PREPARE strsql;
SET _totalcount = FOUND_ROWS();
IN _where VARCHAR(2000),
IN _orderby VARCHAR(200),
IN _NT,
IN _sumfields VARCHAR(200),/*增加统计字段2013-5-8 peaceli*/
+-----------+-----------+-----------------+--------------------------------+-------------+---------------------+--------------------------+------------------------------+----------+-------------------+
*/
BEGIN
SELECT '--begin--';
SET @startRow = _pageSize*(_pageIndex -1);
SET @pageSize = _pageSize;
SET @rowindex = 0;
SET @strsql = CONCAT('select sql_calc_found_rows @rowindex:=@rowindex+1 as rownumber,',_fields,' from ',_tables,CASE IFNULL(_where,'') WHEN '' THEN '' ELSE CONCAT(' where ',_where) END,' order by ',_orderby,' limit ',@startRow,',',@pageSize);
+-----------+-----------+-----------------+--------------------------------+-------------+---------------------+--------------------------+------------------------------+----------+-------------------+
| 3 | 2 | BJ002 | 进口测试商品1 | 69373266590 | 2014-05-09 00:00:00 | 杭州滨江 | 杭州西湖 | 1 | hs001 |
--输入参数:@where -- 查询条件
--输入参数:@orderby -- 排序字段
--输出参数:@page -- 当前页计数从1开始
--输出参数:@pagesize -- 每页大小
--输出参数:@totalcount -- 总记录数
--输出参数:@pagecount -- 总页数
PREPARE sumsql FROM @sumsql;
EXECUTE sumsql;
DEALLOCATE PREPARE sumsql;
END IF;
SELECT '--end--';
END$$
DELIMITER ;
1 row in set
+-----------+-----------+-----------------+--------------------------------+-------------+---------------------+--------------------------+------------------------------+----------+-------------------+
| rownumber | InspectID | InspectCode | ProductName | TypeID | InspectDate | InDistributors | InAgentor | Category | HsCode |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
ELSE
IF (MOD(_totalcount , _pageSize )> 0) THEN
相关文档
最新文档