如何让一个存储过程返回一个select结果和一个变量值
我想搞一个向下对结果集进行翻页的存储过程,使用select语句的limit进行分页,每页显示20条记录,
首先我要获得这个select语句中的所有记录个数,注意是所有记录个数,而不是当前经过limit以后返回的,然后我要获得经过limit以后select返回的结果集,于是这个存储过程就必须返回一个结果集和一个变量,但是我如何让应用程序只通过一条SQL语句就获取到这两个结果呢。
如果把不经过limit的select count(*)的结果作为一个字段加进经过limit的select语句里,那么不就产生了一大堆的相同值的冗余数据了吗,如果我不是每页显示20条记录而是显示很多的话,这个冗余就很大了,但是如果要使用两次SQL语句获取这两个值的话就失去了使用存储过程的意义了。
我对存储过程理解还不深,有什么好方法吗,多谢了。
------解决方案--------------------mysql中客户端获取服务端变量,也是通过select获取,存储过程也不例外。
所以也要2条SQL语句:
call proc1(@a)
select @a
与其这样,还不如直接先select count(*), 再取分页结果集
------解决方案--------------------call p1(@A)
这样就能获取到存储过程返回的记录集了。
select @A
这样就得到记录总条数了。