mysql存储过程异常处理
DELIMITER $$ USE `mtnoh_aaa_platform`$$ DROP PROCEDURE IF EXISTS `proc_eoms_electric_power_generation_check_engine`$$ CREATE DEFINER=`dwgl`@`%` PROCEDURE `proc_eoms_electric_power_generation_check_engine`(
p_oil_engine_id INT,
p_task_id INT,
p_task_sn VARCHAR(40),
P_task_user VARCHAR(255),
P_task_use_date DATETIME,
P_task_end_date DATETIME
)
BEGIN
DECLARE p_oil_engine_Status,P_oil_engine_use_status VARCHAR(300);
DECLARE p_engine_id,p_engine_id_old,p_use_task_id,p_work_flow_version_id INT;
DECLARE p_use_task_sn VARCHAR(40);
DECLARE result_code CHAR(5) DEFAULT ''; DECLARE msg TEXT;DECLARE set_error_code CHAR(1);
DECLARE result_info,success_info TEXT; DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN
GET DIAGNOSTICS CONDITION 1 result_code = RETURNED_SQLSTATE, msg = MESSAGE_TEXT;
ROLLBACK; UPDATE mtdwgl_res.tb_irms_material_oil_engine oe
SET oil_engine_use_status = '空闲'
WHERE oe.deleted = '' AND oe.oil_engine_id = p_oil_engine_id;
SET result_info = CONCAT('校验油机状态失败,错误代码:',result_code,',错误信息:',CHAR(13),CHAR(10),IFNULL(msg,'')); SELECT result_info;
END; START TRANSACTION; SELECT oe.oil_engine_Status,oe.oil_engine_use_status,oe.oil_engine_id,ic.task_id,ic.task_sn
INTO p_oil_engine_Status,P_oil_engine_use_status,p_engine_id,p_use_task_id,p_use_task_sn
FROM mtdwgl_res.tb_irms_material_oil_engine oe
LEFT JOIN mtnoh_aaa_resource.tb_task_electricity_generation_info_current ic
ON oe.oil_engine_id = ic.oil_engine_id
WHERE oe.deleted = '' AND oe.oil_engine_id = p_oil_engine_id
LIMIT 1; SELECT ic.oil_engine_id
INTO p_engine_id_old
FROM mtnoh_aaa_resource.tb_task_electricity_generation_info_current ic
WHERE ic.task_id = p_task_id AND ic.task_sn = p_task_sn
LIMIT 1; IF (p_oil_engine_Status = '在用' AND P_oil_engine_use_status = '空闲') OR p_use_task_sn = p_task_sn THEN
SET p_work_flow_version_id := mtnoh_aaa_platform.get_work_flow_version_id(p_task_sn); IF IFNULL(p_engine_id_old,p_oil_engine_id) <> p_oil_engine_id THEN
UPDATE mtdwgl_res.tb_irms_material_oil_engine oe
SET oil_engine_use_status = '空闲'
WHERE oe.deleted = '' AND oe.oil_engine_id = p_engine_id_old;
END IF; UPDATE mtdwgl_res.tb_irms_material_oil_engine oe
SET oil_engine_use_status = '发电'
WHERE oe.deleted = '' AND oe.oil_engine_id = p_oil_engine_id; INSERT INTO mtnoh_aaa_resource.tb_task_electricity_generation_info_current
(oil_engine_id,work_flow_version_id,task_id,task_sn,task_user,task_use_date,task_end_date)
VALUES(p_oil_engine_id,p_work_flow_version_id,p_task_id,p_task_sn,P_task_user,P_task_use_date,P_task_end_date)
ON DUPLICATE KEY UPDATE task_user = P_task_user
,task_use_date = P_task_use_date
,task_end_date = P_task_end_date;
ELSE
IF IFNULL(p_engine_id,-1) <> -1 THEN
SELECT p_oil_engine_Status,P_oil_engine_use_status;
END IF;
END IF; COMMIT; END$$ DELIMITER ;
mysql存储过程异常处理的更多相关文章
- 关于MySQL存储过程异常处理的一点心得
DROP PROCEDURE IF EXISTS `SP_MODEL`; DELIMITER ;;CREATE PROCEDURE `SP_MODEL`(IN V_TYPE INT)BEGIN /** ...
- Mysql存储过程(四)——异常处理
http://blog.csdn.net/crazylaa/article/details/5368421 有时候,不希望存储过程抛出错误中止执行,而是希望返回一个错误码. MySQL 支持异常处理, ...
- mysql存储过程之异常处理篇
mysql存储过程也提供了对异常处理的功能:通过定义HANDLER来完成异常声明的实现 语法如下: DECLARE handler_type HANDLER FOR condition_value[, ...
- MYSQL 存储过程 多表更新异常捕捉和异常处理方式
今天在做MYSQL 存储过程 多表更新的功能 多表更新时候注意事项 1.首先是确保多表更新能够一次执行,途中没有哪个表的sql语句错误 2.上线后修改表结构及字段,请注意检查是否影响mysql 过 ...
- MySQL存储过程(转)
一.MySQL 创建存储过程 "pr_add" 是个简单的 MySQL 存储过程,这个存储过程有两个 int 类型的输入参数 "a"."b" ...
- MySql存储过程
MySQL 存储过程 ```sql CREATE PROCEDURE myprocedure (IN para01 INTEGER) BEGIN DECLARE var01 CHAR(10); IF ...
- mysql存储过程之游标遍历数据表
原文:mysql存储过程之游标遍历数据表 今天写一个mysql存储过程,根据自己的需求要遍历一个数据表,因为对存储过程用的不多,语法不甚熟悉,加之存储过程没有调试环境,花了不少时间才慢慢弄好,故留个痕 ...
- MySQL存储过程学习笔记
MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣.MySQL 5.0终于开始支持存储过程了. MySQL的关键字大小写通用.该学习笔记对关键字使用大写:变量名,表名使用小写. ...
- MySQL 存储过程 经常使用语法
MySQL 存储过程是从 MySQL 5.0 開始添加的新功能.存储过程的长处有一箩筐.只是最基本的还是运行效率和SQL 代码封装.特别是 SQL 代码封装功能,假设没有存储过程,在外部程序訪问数据库 ...
随机推荐
- CDATA(不应由XML解析器进行解析的文本数据)、CDATA的使用场景
1.1. CDATA: CDATA(Unparsed Character Data)指的是不应由XML解析器进行解析的文本数据. 因为XML解析器会将“<”(新元素的开始)和“&”(字符 ...
- 单元测试-unittest
一.简介 unittest单元测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果. 二.属性介绍 1.unittest模块的各个属性 unittest.Tes ...
- Jmeter接口测试实例3-登录
Jmeter实例3:登录 添加http协议—添加IP.路径.方法,察看结果树,运行 登录成功
- win10电脑录教学视频的时候有回声或者通话的时候有回声,严重干扰录制效果,解决方式。
1.右键点击屏幕右下脚的小喇叭图标. 2.选择声音. 3.选择“录制”,出现如下 4.选择侦听 5.把侦听此设备 的打勾去掉.然后点击应用,点击确定,即可. 再也没有回声的烦恼了.
- 20、collections模块和re模块(正则表达式详解)
从今天开始我们就要开始学习python的模块,今天先介绍两个常用模块collections和re模块.还有非常重要的正则表达式,今天学习的正则表达式需要记忆的东西非常多,希望大家可以认真记忆.按常理来 ...
- git 一些常见问题 总结
问题1: Auto packing the repository in background for optimum performance. See "git help gc" ...
- APP中的图片如何长按可以下载并保存图片到相册出错处理
https://www.cnblogs.com/interdrp/p/9302164.html 接上文. 如果用户在保存图片过程中,不小心拒绝了相册的访问权限
- strncpy, strncpy_s
Defined in header <string.h> (1) char *strncpy( char *dest, const char *src, size_t co ...
- eclipse项目名称后面括号里的名称和项目名称不一样
解决方案: 1:项目右键-属性(Properties)-Web Project Setting, 改名称注意:这个名字将成为你在浏览器访问的路径 2:打开项目目录的.setting文件夹,随便一个文本 ...
- python3 “POST data should be bytes or an iterable of bytes...”的解决方法
urllib.parse.urlencode({}).encode(encoding='utf8') 参考了:dushu990