很简单,不需要使用游标循环来读取,直接select * into @变量就OK了,还可以传递参数来执行。
- #拼接查询总记录的SQL语句
- set v_sqlcounts = concat('select count(*) into @recordcount from ',v_tables,v_where);
- set @sqlcounts := v_sqlcounts;
- #预处理动态SQL
- prepare stmt from @sqlcounts;
- #传递动态SQL内参数
- set @s1= categoryid;
- execute stmt using @s1;
- deallocate prepare stmt;
- #获取动态SQL语句返回值
- set recordcount = @recordcount;
以上我上再做存储过程分页里用到动态SQL里将查询到的count记录条数通过变量@recordcount放到recordcount里面了。
mysql的IF ELSE和其他数据库的判断有点不一样,简单的判断语句如下。
- #根据总记录跳数计算出总页数
- set pagecount = ceiling((recordcount+0.0)/pagesize);
- if pageindex <1 then
- set pageindex = 1;
- elseif pageindex > pagecount then
- set pageindex = pagecount;
- else
- select pageindex,pagecount;
- end if;