MYSQL的分页过程,和事务处理的一个测试过程。

/*
--名称:MYSQL版查询分页存储过程 by peace 2013-8-14
--输入参数:@fields -- 要查询的字段用逗号隔开
--输入参数:@tables -- 要查询的表
--输入参数:@where -- 查询条件
--输入参数:@orderby -- 排序字段
--输出参数:@page -- 当前页计数从1开始
--输出参数:@pagesize -- 每页大小
--输出参数:@totalcount -- 总记录数
--输出参数:@pagecount -- 总页数
*/
DROP PROCEDURE IF EXISTS Query_Pagination;
CREATE PROCEDURE Query_Pagination
(
in _fields varchar(2000),
in _tables text,
in _where varchar(2000),
in _orderby varchar(200),
in _pageindex int,
in _pagesize int,
in _sumfields varchar(200),/*增加统计字段2013-5-8 peaceli*/
out _totalcount int ,
out _pagecount int
)
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);
prepare strsql from @strsql;
execute strsql;
deallocate prepare strsql;
set _totalcount = found_rows(); if (_totalcount <= _pageSize) then
                    set _pagecount = 1;
else if (_totalcount % _pageSize > 0) then
set _pagecount = _totalcount / _pageSize + 1;
else
set _pagecount = _totalcount / _pageSize;
end if;
end if;
if(ifnull(_sumfields,'') <> '') then set @sumsql = contact('select ',_sumfields,' from ',_tables,case ifnull(_where,'') when '' then '' else concat(' where ',_where) end); prepare sumsql from @sumsql; execute sumsql; deallocate prepare sumsql; end if; end
CREATE PROCEDURE TransTest(in p1 VARCHAR(20),in p2 VARCHAR(50))
BEGIN
declare err int default 0;
/*如果出现sql异常,则将err设置为1后继续执行后面的操作 */
declare continue handler for sqlexception set err=1; -- 出错处理
set autocommit = 0;
insert into sy_queryconfig(syq_id) values(p1);
insert into sy_queryconfig(syq_id) values(p2);
if err=1 then
ROLLBACK;
ELSE
COMMIT;
end if;
END
 
CREATE PROCEDURE TransTest2(in p1 VARCHAR(20),in p2 VARCHAR(50))
BEGIN
/*只要发生异常就回滚*/
declare exit handler for sqlexception
BEGIN
ROLLBACK;
/*返回异常处理结果等其它操作*/
END;
START TRANSACTION;
insert into sy_queryconfig(syq_id) values(p1);
insert into sy_queryconfig(syq_id) values(p2);
COMMIT;
END
 

MYSQL分页存储过程及事务处理--转自peace的更多相关文章

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

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

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

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

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

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

  4. mysql 分页存储过程 一次返回两个记录集(行的条数,以及行记录),DataReader的Read方法和NextResult方法

    DELIMITER $$ USE `netschool`$$ DROP PROCEDURE IF EXISTS `fn_jk_GetCourses`$$ CREATE DEFINER=`root`@` ...

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

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

  6. MySQL分页存储过程

    CREATE PROCEDURE ProcPage(in tableName varchar(20),#表名  in showField varchar(100),#要显示的列名  in whereT ...

  7. MySql通用分页存储过程

    MySql通用分页存储过程 1MySql通用分页存储过程 2 3过程参数 4p_cloumns varchar(500),p_tables varchar(100),p_where varchar(4 ...

  8. MYSQL版查询分页存储过程

    /*--名称:MYSQL版查询分页存储过程 --输入参数:@fields -- 要查询的字段用逗号隔开--输入参数:@tables -- 要查询的表--输入参数:@where -- 查询条件--输入参 ...

  9. mysql通用分页存储过程遇到的问题(转载)

    mysql通用分页存储过程遇到的问题(转载) http://www.cnblogs.com/daoxuebao/archive/2015/02/09/4281980.html

随机推荐

  1. MFC之树控件

    树控件对应的类: CTreeControl 树控件属性设置: 启用复选框:Check Boxes = True 父节点显示+-按钮:Has Button = True ; Lines At Roots ...

  2. session问题和JSP

    session问题和JSP 07. 五 / J2EE / 没有评论   一.Session开发中遇到的问题1.内存中的Session非常多,怎么办?2.用户在购物中.服务器停掉了该web应用(或者重新 ...

  3. VIM编辑器操作指令

    VIM有三种操作模式: 1,命令模式--command mode 2,输入模式--insert mode 3,底行模式--last line mode [在命令模式的时候,按Shift +  :出现的 ...

  4. Lucene学习总结之七:Lucene搜索过程解析

    一.Lucene搜索过程总论 搜索的过程总的来说就是将词典及倒排表信息从索引中读出来,根据用户输入的查询语句合并倒排表,得到结果文档集并对文档进行打分的过程. 其可用如下图示: 总共包括以下几个过程: ...

  5. git merge 分支

    把master merge到apple_campus1.git stash2.git checkout master3.git pull4.git checkout apple_campus5.git ...

  6. Django的痛点

    如果一个html里面写了多个<a href = A.html > ,启动A.html也有这个<a herf = B.xml> 这个时候Django怎么访问这些url?

  7. 如何导出sqlserver中的表数据,sqlserver2008

    sqlserver数据库中的表数据,我们通常想使用一下,可是怎样获取这些数据呢? 1.选择任务->生成脚本 2.选择数据库 3.设置配置,让编写数据的脚本为true 4.保存为sql 5.完成 ...

  8. cf472B Design Tutorial: Learn from Life

    B. Design Tutorial: Learn from Life time limit per test 1 second memory limit per test 256 megabytes ...

  9. CentOS 6.5 CodeBlocks::wxWidgets安装与配置

    第一步, #yum install  codeblocks codeblocks-contrib codeblocks-devel 第二步,到官方下载源码包,我下的是wxX11的3.0版的. #tar ...

  10. convertView

    [convertView] 参考:https://zhidao.baidu.com/question/423895201122905772.html