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 代码封装功能,假设没有存储过程,在外部程序訪问数据库 ...
随机推荐
- click()和onclick()的区别
click()和onclick()的区别: 1.onclick是绑定事件,告诉浏览器在鼠标点击时候要做什么 click本身是方法作用是触发onclick事件,只要执行了元素的click()方法,就会触 ...
- js float运算精度问题
先放个前辈的文章:JavaScript数字精度丢失问题总结 今天遇到了19.99*100的问题,答案不等于1999,因为在javascript中浮点数的计算是以2进制计算的.自己写了一波解决方法(不能 ...
- HTML5 学习07——Video(视频)Audio(音频)
<video> 元素:提供了 播放.暂停和音量控件来控制视频. width 和 height 属性:控制视频的尺寸 <video> 与</video> 标签之间插入 ...
- FPGA基础之逻辑单元(LE or LC)的基本结构
原帖地址: https://blog.csdn.net/a8039974/article/details/51706906/ 逻辑单元在FPGA器件内部,是完成用户逻辑的最小单元.逻辑单元在ALTER ...
- Docker学习笔记1 -- 刚入手docker时的几个命令
目录 Hello World 后台运行 停止运行 容器 载入镜像 指定端口映射 查看日志 查看应用的进程 登入镜像内部 移除容器 镜像 查看本地镜像 拉取镜像 查找镜像 更新镜像 构建镜像 设置镜像标 ...
- 【Jenkins】新版本的特性:自定义流水线
#!/usr/bin/env groovy pipeline { agent none stages { stage('stage-01') { agent { label 'master' } st ...
- 【JVM】垃圾收集器
程序计数器.Java虚拟机栈.本地方法栈分配的内存是确定的,生命周期与线程同样.所以不须要过多考虑回收问题. 而Java堆和方法区仅仅有运行时才知道有哪些对象被创建,须要多少内存,这部分的内存分配和回 ...
- MySQL关于根据日期查询数据的sql语句
查询在某段日期之间的数据: select * from 数据表 where 时间字段名 BETWEEN '2016-02-01' AND '2016-02-05' 查询往前3个月的数据: selec ...
- [JS]常见JS错误之一:Uncaught SyntaxError: Unexpected identifier
在编写JS时如果创建变量没有用var而是使用了变量的类型,如: MyClass c=new MyClass(); 这样的错误Java程序员容易犯,也许不经意就写出来了,然后chrome的开发者工具里会 ...
- 【推荐】Hutool 的通用工具类库
摘自3.1.1版本作者发布原话,当时看到有点说不上的情绪,为作者的坚持.热爱点个赞. 已经想不起来是怎样结识 Hutool 的,但 Hutool 伴随几个项目的推进,获得了同事一致好评. 没经过实践和 ...