当前位置: 首页 > 图文教程 > 数据库 > MYSQL > mysql 教程 存储过程

MYSQL
MySQL忘记密码恢复密码的实现方法
mysql 时间转换函数的使用方法
使用mysql的disctinct group by查询不重复记录
mysql备份恢复mysqldump.exe几个常用用例
超详细mysql left join,right join,inner join用法分析
mysql 5.0.67最新版替代MySQL 5.0.51b版本官方下载
比较详细的MySQL字段类型说明
mysql 记录不存在时插入 记录存在则更新的实现方法
MYSQL基础之连接MYSQL、修改密码、添加用户
mysql数据库优化必会的几个参数中文解释
mysql中文排序注意事项与实现方法
MySQL 5.0触发器参考教程
MySQL5创建存储过程的示例
MYSQL5 masterslave数据同步配置方法
mysql数据库导出xml的实现方法
MySql增加用户、授权、修改密码等语句
Mysql默认设置的危险性分析
用MySQL创建数据库和数据库表代码
Mysql如何避免全表扫描的方法
mysql的校对规则引起的问题分析

MYSQL 中的 mysql 教程 存储过程


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 44 ::
收藏到网摘: n/a

最近用mysql + asp.net来写网站,既然mysql已经支持存储过程了,那么像分页这么常用的东西,当然要用存储过程啦 不过在网上找了一些,发现都有一个特点——就是不能传出总记录数,干脆自己研究吧。终于,算是搞出来了,效率可能不是很好,但是我也觉得不错了。贴代码吧直接:也算是对自己学习mysql的一个记录。
  
复制代码 代码如下:

CREATE PROCEDURE p_pageList
  (
  m_pageNo int ,
  m_perPageCnt int ,
  m_column varchar(1000) ,
  m_table varchar(1000) ,
  m_condition varchar(1000),
  m_orderBy varchar(200) ,
  out m_totalPageCnt int
  )
  BEGIN
  SET @pageCnt = 1; -- 总记录数
  SET @limitStart = (m_pageNo - 1)*m_perPageCnt;
  SET @limitEnd = m_perPageCnt;
  SET @sqlCnt = CONCAT('select count(1) into @pageCnt from ',m_table); -- 这条语句很关键,用来得到总数值
  SET @sql = CONCAT('select ',m_column,' from ',m_table);
  IF m_condition IS NOT NULL AND m_condition <> '' THEN
  SET @sql = CONCAT(@sql,' where ',m_condition);
  SET @sqlCnt = CONCAT(@sqlCnt,' where ',m_condition);
  END IF;
  IF m_orderBy IS NOT NULL AND m_orderBy <> '' THEN
  SET @sql = CONCAT(@sql,' order by ',m_orderBy);
  END IF;
  SET @sql = CONCAT(@sql, ' limit ', @limitStart, ',', @limitEnd);
  PREPARE s_cnt from @sqlCnt;
  EXECUTE s_cnt;
  DEALLOCATE PREPARE s_cnt;
  SET m_totalPageCnt = @pageCnt;
  PREPARE record from @sql;
  EXECUTE record;
  DEALLOCATE PREPARE record;
  END