Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 420|回复: 0

mysql存储过程异常处理

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-6-19 12:26:31 | 显示全部楼层 |阅读模式
    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 '00000'; 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 = '0' 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 = '0' 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 = '0' 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 = '0' 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 ;

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-1-23 03:20 , Processed in 0.074967 second(s), 27 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表