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 代码封装功能,假设没有存储过程,在外部程序訪问数据库 ...
随机推荐
- Redis、Memcache、MongoDb的优缺点
Redis.Memcache.MongoDb的优缺点 Redis优点 支持多种数据结构,如 string(字符串). list(双向链表).dict(hash表).set(集合).zset(排序set ...
- vs 基本验证控件使用
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.c ...
- Oracle CPU使用率过高问题处理
1.下载Process Explorer 2.打开Process Explorer,查看CPU使用情况最高的进程 3.双击该进程,查看详情 \ 4. 获取cpu使用最好的线程tid 5. ...
- Set authorization for a whole area
public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) ...
- 关于#!/bin/bash和#!/bin/sh
关于#!/bin/bash和#!/bin/sh #!/bin/bash是指此脚本使用/bin/bash来解释执行. 其中,#!是一个特殊的表示符,其后,跟着解释此脚本的shell路径. bash只 ...
- Linux之整理bash命令类型
作业四:整理bash命令类型,验证寻找一个命令的优先级 类型 ==> alias ==> Compound Commands ==> function ==> build_in ...
- 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 ...
- linux bash timeout
http://www.digitalinternals.com/unix/unix-linux-run-command-with-timeout/500/ There are two ways to ...
- javascript日期时间操作库推荐
https://github.com/datejs/Datejs 链接: https://pan.baidu.com/s/1QTGhxslarNyW_0kB6gyJYA 提取码: ibab 如果这篇文 ...
- Foxmail中配置O365邮箱和Hotmail邮箱
一.简述 平时我们经常使用第三方的邮箱工具来管理邮箱.可能性能比Outlook好很多,比如Foxmail,而且也能和Skype会议关联的很好.本文就讲如何在Outlook中关联Office365邮箱和 ...