MySQL 儲存過程空結果集錯誤Error 1329 No data 的異常處理
在MySQL的儲存過程中,當查詢到空結果集時會產生下面報錯
Error 1329 No data - zero rows fetched, selected, or processed
解決方法:
在儲存過程中,新增異常處理
注意程式碼中的橙色部分的異常程式碼
Error 1329 No data - zero rows fetched, selected, or processed
解決方法:
在儲存過程中,新增異常處理
注意程式碼中的橙色部分的異常程式碼
-
delimiter $$
-
CREATE PROCEDURE PROC_ADDSubscribers_diff()
-
BEGIN
-
DECLARE done INT DEFAULT FALSE;
-
DECLARE Var_IMSI_NODE2 varchar(16);
-
DECLARE Var_MSISDN_NODE2 varchar(19);
-
DECLARE Var_IMEI_NODE2 varchar(16);
-
DECLARE Var_Timestamp_NODE2 bigint(32);
-
DECLARE Var_IMSI_NODE1 varchar(16);
-
DECLARE Var_MSISDN_NODE1 varchar(19);
-
DECLARE Var_IMEI_NODE1 varchar(16);
-
DECLARE Var_Timestamp_NODE1 bigint(32);
-
DECLARE Var_sqlcode INT DEFAULT 0;
-
DECLARE cur1 CURSOR FOR select IMSI, MSISDN, IMEI, Timestamp from ADDSubscribers_node2;
-
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-
OPEN cur1;
-
read_loop: LOOP
-
FETCH cur1 INTO Var_IMSI_NODE2, Var_MSISDN_NODE2, Var_IMEI_NODE2, Var_Timestamp_NODE2;
-
IF done IS TRUE THEN
-
LEAVE read_loop;
-
END IF;
-
IF done IS FALSE THEN
-
IF (Var_IMSI_NODE2 is not null) THEN
-
BEGIN
-
DECLARE no_data CONDITION FOR 1329;
-
DECLARE CONTINUE HANDLER FOR no_data
-
BEGIN
-
SET Var_sqlcode=2000;
-
END;
-
select Timestamp, MSISDN, IMEI INTO Var_Timestamp_NODE1, Var_MSISDN_NODE1, Var_IMEI_NODE1 from dmcdbMTNGH.ADDSubscribers where IMSI = Var_IMSI_NODE2;
-
IF Var_sqlcode = 2000 THEN
-
start transaction;
-
INSERT INTO ADDSubscribers_diff SELECT * FROM ADDSubscribers_node2 WHERE IMSI = Var_IMSI_NODE2;
-
commit;
-
ELSEIF Var_sqlcode = 0 THEN
-
IF Var_Timestamp_NODE1 >= Var_Timestamp_NODE2 THEN
-
select concat('The data on node01 is newer!') as Info;
-
ELSE
-
IF (Var_MSISDN_NODE1 <> Var_MSISDN_NODE2) || (Var_IMEI_NODE1 <> Var_IMEI_NODE2) THEN
-
start transaction;
-
INSERT INTO ADDSubscribers_diff SELECT * FROM ADDSubscribers_node2 WHERE IMSI = Var_IMSI_NODE2;
-
commit;
-
END IF;
-
END IF;
-
END IF;
-
END;
-
END IF;
-
END IF;
-
END LOOP;
-
CLOSE cur1;
-
select concat('The job',' is ','finished!') as Info;
-
END$$
- delimiter ;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26506993/viewspace-2140546/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL儲存過程的異常處理方法MySql儲存過程
- [MySQL光速入門]017 儲存過程中的"異常處理"MySql儲存過程
- 簡單的mysql儲存過程,輸出結果集MySql儲存過程
- mysql返回一個結果集的儲存過程小例子MySql儲存過程
- Oracle異常錯誤處理Oracle
- ORACLE 異常錯誤處理Oracle
- 錯誤處理:如何通過 error、deferred、panic 等處理錯誤?Error
- 異常錯誤資訊處理
- Python錯誤處理和異常處理(二)Python
- 儲存過程——異常捕獲&列印異常資訊儲存過程
- rust學習十、異常處理(錯誤處理)Rust
- C++錯誤和異常處理C++
- php錯誤與異常處理方法PHP
- goang 錯誤&異常處理機制Go
- 說說你對異常處理和錯誤處理的理解
- mssql 儲存過程呼叫另一個儲存過程中的結果的方法分享SQL儲存過程
- 恢復MySQL資料庫建立儲存過程是遇到錯誤MySql資料庫儲存過程
- 前端錯誤收集以及統一異常處理前端
- Python之錯誤異常和檔案處理Python
- .NET----錯誤和異常處理機制
- 在vue使用異常處理做錯誤提示Vue
- 15-錯誤處理(Error)Error
- mysql 儲存過程MySql儲存過程
- .NET 結果與錯誤處理利器 FluentResults
- Mysql 儲存過程的使用MySql儲存過程
- MySQL的物理儲存結構和session過程MySqlSession
- java使用mybatis 呼叫儲存過程返回一個遊標結果集JavaMyBatis儲存過程
- 【ERROR】儲存鏈路問題造成oracle錯誤,ora-600[4193] 問題處理ErrorOracle
- MySQL之儲存過程MySql儲存過程
- MySQL---------儲存過程MySql儲存過程
- mysql儲存過程整理MySql儲存過程
- Python入門學習 之 永久儲存、異常處理Python
- plsqlDevloper 儲存過程的除錯SQLdev儲存過程除錯
- mysql儲存過程的引數MySql儲存過程
- thinkphp原始碼分析(四)—錯誤及異常處理篇PHP原始碼
- PHP 核心知識點(一)異常和錯誤處理PHP
- 【ERROR】ORA-8103錯誤分析處理Error
- MVC使用異常過濾器處理異常MVC過濾器
- mysql如何呼叫儲存過程MySql儲存過程