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 儲存過程定義條件和異常處理MySql儲存過程
- [MySQL光速入門]017 儲存過程中的"異常處理"MySql儲存過程
- 簡單的mysql儲存過程,輸出結果集MySql儲存過程
- mysql返回一個結果集的儲存過程小例子MySql儲存過程
- Oracle 儲存過程返回結果集|轉|Oracle儲存過程
- Oracle 儲存過程返回結果集 (轉)Oracle儲存過程
- 異常處理過程
- MySQL儲存過程中捕獲異常的方法MySql儲存過程
- oracle 儲存過程遊標中處理並記錄異常Oracle儲存過程
- 在儲存過程A中呼叫儲存過程B的結果儲存過程
- 總結:整理 oracle異常錯誤處理 .Oracle
- JAVA + Oracle儲存過程返回查詢結果集JavaOracle儲存過程
- 異常錯誤資訊處理
- Oracle異常錯誤處理Oracle
- ORACLE 異常錯誤處理Oracle
- PHP錯誤處理和異常處理PHP
- 儲存過程——異常捕獲&列印異常資訊儲存過程
- MySQL儲存過程-->通過遊標遍歷和異常處理遷移資料到歷史表MySql儲存過程
- 【同步複製常見錯誤處理3】找不到儲存的過程 sp_MSins_tablename
- pl/sql developer除錯儲存過程報錯處理SQLDeveloper除錯儲存過程
- 某次BW 異常處理過程
- pl/sql中錯誤的異常處理SQL
- 儲存過程結果進行查詢 select 存過過程儲存過程
- Python錯誤處理和異常處理(二)Python
- Java基礎知識:通過異常處理錯誤Java
- php錯誤與異常處理方法PHP
- goang 錯誤&異常處理機制Go
- C++錯誤和異常處理C++
- Laravel Exceptions——異常與錯誤處理LaravelException
- mssql 儲存過程呼叫另一個儲存過程中的結果的方法分享SQL儲存過程
- 錯誤處理:如何通過 error、deferred、panic 等處理錯誤?Error
- MySQL 建立儲存過程報錯MySql儲存過程
- MySQL儲存過程詳解 mysql 儲存過程MySql儲存過程
- PHP系列(七)PHP錯誤異常處理PHP
- java使用mybatis 呼叫儲存過程返回一個遊標結果集JavaMyBatis儲存過程
- MySQL異常處理MySql
- mysql的儲存過程MySql儲存過程