存儲過程錯誤異常處理例子 --> 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM