`
xitonga
  • 浏览: 587610 次
文章分类
社区版块
存档分类
最新评论

[MySQL] 存储过程错误异常处理例子 --> DECLARE EXIT HANDLER FOR SQLEXCEPTION

 
阅读更多

刚才一个朋友问到:

mysql有类似mssql退出执行的方法不?
比如我执行到某个条件,下面就终止执行了。

想起以前写的存储过程,找了好久才找到,就发给他,希望对他有所帮助,贴在这里,留作纪念,也方便自己以后查找。


-- --------------------------------------------------------------------------------

-- Routine DDL
-- --------------------------------------------------------------------------------
DELIMITER $$


CREATE PROCEDURE xxx.proc_reuters_dss_equity_price(OUT p_result BOOLEAN)
BEGIN
-- 错误处理
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
TRUNCATE TABLE reuters_interface.reuters_dss_equity_price;
SET p_result = FALSE;
END;

-- 处理数据
REPLACE INTO reuters_dss.equity_price (ric, company_name, currency_code, exchange_code, ticker, trade_date, ask_price, bid_price,
close_price, volume, last_updated_ask_price, last_updated_bid_price, last_updated_close_price, last_updated_date, last_updated_volume, split_factor, vwap_price,
insert_time)
SELECT ric, IF(company_name='', null, company_name), currency_code, exchange_code, ticker, trade_date, IF(ask_price='0.00000', null, ask_price),
IF(bid_price='0.00000', null, bid_price), close_price, IF(volume='0', null, volume), IF(last_updated_ask_price='0.00000', null, last_updated_ask_price),
IF(last_updated_bid_price='0.00000', null, last_updated_bid_price),
IF(last_updated_close_price='0.00000', null, last_updated_close_price),
last_updated_close_price_date,
IF(last_updated_volume='0', null, last_updated_volume),
IF(split_factor='', null, split_factor),
IF(vwap_price='0.00000', null, vwap_price),
insert_time
FROM reuters_interface.reuters_dss_equity_price;

COMMIT;

TRUNCATE TABLE reuters_interface.reuters_dss_equity_price;
SET p_result = TRUE;

COMMIT;


END



分享到:
评论

相关推荐

    [MySQL] 存储过程错误异常处理例子

    -- DECLARE EXIT HANDLER FOR SQLEXCEPTION

    原创的c++版语法分析器

    args_list_declare --> args_declare args_declare_right \ args_declare_right --> , args_declare args_declare_right \ args_declare_right --> NOTHING \ args_declare --> var_declare \ var_declare --> ...

    mysql存储过程之错误处理实例详解

    本文实例讲述了mysql存储过程之错误处理。分享给大家供大家参考,具体如下: 当存储过程中发生错误时,重要的是适当处理它,例如:继续或退出当前代码块的执行,并发出有意义的错误消息。其中mysql提供了一种简单的...

    MySQL存储过程中使用WHILE循环语句的方法

    本文实例讲述了MySQL存储过程中使用WHILE循环语句的方法。分享给大家供大家参考。具体如下: mysql> mysql> delimiter $$ mysql> mysql> CREATE PROCEDURE myProc() -> BEGIN -> -> DECLARE i int; -> SET i=1;...

    MySQL异常处理浅析

    MySQL的异常处理分析如下: 标准格式 DECLARE handler_type HANDLER FOR condition_value[,...] statement handler_type: CONTINUE | EXIT | UNDO --这个暂时不支持 condition_value: SQLSTATE [VALUE] ...

    MySQL 自定义函数CREATE FUNCTION示例

    mysql> mysql> delimiter $$ mysql> mysql> CREATE FUNCTION myFunction ...-> DECLARE l_new_string VARCHAR(255); -> DECLARE l_find_pos INT; -> -> SET l_find_pos=INSTR(in_string,in_find_st

    MySQL定义异常和异常处理详解

    定义异常是事先定义程序执行过程中遇到的问题,异常处理定义了在遇到问题时对应当采取的处理方式,并且保证存储过程或者函数在遇到错误时或者警告时能够继续执行。  1 异常定义  1.1 语法  DECLARE condition_...

    Android雷达图(蜘蛛网图)源码

    -- 线的颜色 --> <attr name="cotentColor" format="color"/><!-- 图形的颜色 --> <attr name="side" format="dimension"/> <!-- 三角形边长 --> <attr name="distance" format="dimension"/> <!-- 当前三角形和...

    MySQL存储过程相互调用并获得错误码示例

    代码如下: mysql> mysql> delimiter $$ mysql> mysql> CREATE PROCEDURE myProc() -> MODIFIES SQL DATA -> BEGIN -> DECLARE l_status VARCHAR(20); -> -> CALL myProc1(l_status); -> IF l_status=’Duplicate ...

    mysql存储过程中的异常处理解析

    定义异常捕获类型及处理方法:  DECLARE handler_action HANDLER FOR condition_value [, condition_value] ... statement handler_action: CONTINUE | EXIT | UNDO condition_value: mysql_error_code...

    MySQL存储过程中实现执行动态SQL语句的方法

    本文实例讲述了MySQL存储过程中实现执行动态SQL语句的方法。分享给大家供大家参考。具体实现方法如下: mysql> mysql> delimiter $$ mysql> mysql> CREATE PROCEDURE set_col_value -> (in_table VARCHAR(128), -...

    MySQL创建存储过程批量插入10万条数据

    MySQL创建存储过程批量插入10万条数据 存储过程 1、首先防止主键冲突,我们清空表。 TRUNCATE table A_student; 2、编写存储过程 delimiter ‘$’; CREATE PROCEDURE batchInsert(in args int) BEGIN declare i int ...

    mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)及变量创建(DECLARE)和赋值(SET)操作方法

    主要介绍了mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)及变量创建(DECLARE)和赋值(SET)操作方法,结合实例形式较为详细的分析了mysql存储过程创建、调用及变量创建、赋值具体原理、操作技巧与相关...

    mysql存储过程之游标(DECLARE)原理与用法详解

    本文实例讲述了mysql存储过程之游标(DECLARE)原理与用法。分享给大家供大家参考,具体如下: 我们在处理存储过程中的结果集时,可以使用游标,因为游标允许我们迭代查询返回的一组行,并相应地处理每行。mysql的...

    定制日期选择器(CalendarView)

    -- 今天字体颜色 --> <attr name="colorSelectedDayBackground" format="color"/> <!-- 被选中的日期背景颜色 --> <attr name="colorSelectedDayText" format="color"/> <!-- 被选中的日期字体颜色 --> ...

    GifImageView.java

    --gif文件引用--> <attr name="gif_src" format="reference" /> <!--是否加载完自动播放--> <attr name="auth_play" format="boolean" /> <!--播放次放,默认永远播放--> ...

    利用SQL查询删除所有表及储过程

    DECLARE c1 cursor for select 'alter table ['+ object_name(parent_obj) + '] drop constraint ['+name+']; ' from sysobjects where xtype = 'F' open c1 declare @c1 varchar(8000) fetch next from c1 ...

    在db2数据库写存储过程

    CREATE PROCEDURE "PLName"(--存储过程名字 IN orders_ID BIGINT, OUT Comments VARCHAR(254) ) BEGIN declare TEMP VARCHAR(254); --声明变量 declare t_TEMP VARCHAR(254); DECLARE c1 CURSOR FOR SELECT ...

    sqlserver存储过程

    ----------------------------------------带输出参数存储过程--------------------------------------- if (object_id('proc_getUsersRecord', 'P') is not null) drop proc proc_getUsersRecord go create proc ...

Global site tag (gtag.js) - Google Analytics