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存储过程异常处理的更多相关文章

  1. 关于MySQL存储过程异常处理的一点心得

    DROP PROCEDURE IF EXISTS `SP_MODEL`; DELIMITER ;;CREATE PROCEDURE `SP_MODEL`(IN V_TYPE INT)BEGIN /** ...

  2. Mysql存储过程(四)——异常处理

    http://blog.csdn.net/crazylaa/article/details/5368421 有时候,不希望存储过程抛出错误中止执行,而是希望返回一个错误码. MySQL 支持异常处理, ...

  3. mysql存储过程之异常处理篇

    mysql存储过程也提供了对异常处理的功能:通过定义HANDLER来完成异常声明的实现 语法如下: DECLARE handler_type HANDLER FOR condition_value[, ...

  4. MYSQL 存储过程 多表更新异常捕捉和异常处理方式

    今天在做MYSQL 存储过程 多表更新的功能   多表更新时候注意事项 1.首先是确保多表更新能够一次执行,途中没有哪个表的sql语句错误 2.上线后修改表结构及字段,请注意检查是否影响mysql 过 ...

  5. MySQL存储过程(转)

    一.MySQL 创建存储过程 "pr_add" 是个简单的 MySQL 存储过程,这个存储过程有两个 int 类型的输入参数 "a"."b" ...

  6. MySql存储过程

    MySQL 存储过程 ```sql CREATE PROCEDURE myprocedure (IN para01 INTEGER) BEGIN DECLARE var01 CHAR(10); IF ...

  7. mysql存储过程之游标遍历数据表

    原文:mysql存储过程之游标遍历数据表 今天写一个mysql存储过程,根据自己的需求要遍历一个数据表,因为对存储过程用的不多,语法不甚熟悉,加之存储过程没有调试环境,花了不少时间才慢慢弄好,故留个痕 ...

  8. MySQL存储过程学习笔记

    MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣.MySQL 5.0终于开始支持存储过程了. MySQL的关键字大小写通用.该学习笔记对关键字使用大写:变量名,表名使用小写. ...

  9. MySQL 存储过程 经常使用语法

    MySQL 存储过程是从 MySQL 5.0 開始添加的新功能.存储过程的长处有一箩筐.只是最基本的还是运行效率和SQL 代码封装.特别是 SQL 代码封装功能,假设没有存储过程,在外部程序訪问数据库 ...

随机推荐

  1. Redis、Memcache、MongoDb的优缺点

    Redis.Memcache.MongoDb的优缺点 Redis优点 支持多种数据结构,如 string(字符串). list(双向链表).dict(hash表).set(集合).zset(排序set ...

  2. vs 基本验证控件使用

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.c ...

  3. Oracle CPU使用率过高问题处理

    1.下载Process Explorer 2.打开Process Explorer,查看CPU使用情况最高的进程 3.双击该进程,查看详情 \ 4.    获取cpu使用最好的线程tid 5.     ...

  4. Set authorization for a whole area

    public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) ...

  5. 关于#!/bin/bash和#!/bin/sh

    关于#!/bin/bash和#!/bin/sh   #!/bin/bash是指此脚本使用/bin/bash来解释执行. 其中,#!是一个特殊的表示符,其后,跟着解释此脚本的shell路径. bash只 ...

  6. Linux之整理bash命令类型

    作业四:整理bash命令类型,验证寻找一个命令的优先级 类型 ==> alias ==> Compound Commands ==> function ==> build_in ...

  7. a^b%p and a*b%p快速幂

    #include<cstdio> int power(int a, int b, int p) { %p; ) { ) ans=(long long)ans*a%p; a=(long lo ...

  8. linux bash timeout

    http://www.digitalinternals.com/unix/unix-linux-run-command-with-timeout/500/ There are two ways to ...

  9. javascript日期时间操作库推荐

    https://github.com/datejs/Datejs 链接: https://pan.baidu.com/s/1QTGhxslarNyW_0kB6gyJYA 提取码: ibab 如果这篇文 ...

  10. Foxmail中配置O365邮箱和Hotmail邮箱

    一.简述 平时我们经常使用第三方的邮箱工具来管理邮箱.可能性能比Outlook好很多,比如Foxmail,而且也能和Skype会议关联的很好.本文就讲如何在Outlook中关联Office365邮箱和 ...