博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MYSQL分页存储过程及事务处理
阅读量:6258 次
发布时间:2019-06-22

本文共 2515 字,大约阅读时间需要 8 分钟。

最近给客户做的一小系统是SQLSERVER的数据库,因为特殊原因要切换到MYSQL上去,切换数据库确实让人头疼的,SQLSERVER和MYSQL的存储过程还是有很大差别的,下面是我做切换时转换的MYSQL版的分页过程,和事务处理的一个测试过程,事务处理也不像SQLSERVER那样。不多说了,供学习MYSQL的兄弟们参考下,我用的MYSQL5.5版本,经过测试都是可行的。

 

/*--名称: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))BEGINdeclare 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

 

转载于:https://www.cnblogs.com/peaceli/p/MYSQL.html

你可能感兴趣的文章
iphone配置实用工具iPhone Configuration Utility
查看>>
Centos搭建开发环境,PHP7+ Nginx1.12+ Mysql5.7
查看>>
RSA的密钥把JAVA格式转换成C#的格式
查看>>
转载 HTTPS 之fiddler抓包、jmeter请求
查看>>
Android常用查询网站
查看>>
wifi diplasy流程介绍
查看>>
使用浏览器做编辑器
查看>>
【20181030T1】排列树【树形结构+组合数】
查看>>
windows&linux双系统时间相差8小时
查看>>
史上最详细的linux网卡ifcfg-eth0配置详解
查看>>
iphone-common-codes-ccteam源代码 CCUIScreen.m
查看>>
SDO_Geometry相关学习(转载)
查看>>
二叉查找(排序)树的分析与实现
查看>>
LeetCode-230. Kth Smallest Element in a BST
查看>>
js之隔行换色
查看>>
使用EMQ搭建MQTT服务器
查看>>
P3379 【模板】最近公共祖先(LCA)(树链剖分)版
查看>>
利用GCC编译器生成动态链接库和静态链接库
查看>>
time模块
查看>>
[Weekly] 2014.03.01-2014.03.08
查看>>