 /**//**mySql中是否能有SQLserver的@@error變量呢,或者如c#中的try catch語法呢。

答案是肯定的,實(shí)例代碼如下:**/


DROP PROCEDURE IF EXISTS sp_call_jobs;

CREATE PROCEDURE sp_call_jobs()

NOT DETERMINISTIC

SQL SECURITY DEFINER

COMMENT ''

BEGIN

declare _row,_err,_count int default 0;

DECLARE CONTINUE HANDLER FOR SQLEXCEPTION,SQLWARNING,NOT FOUND set _err=1;

while _row<3 DO

START TRANSACTION;

insert into t1(cond_val)values(null);

COMMIT;

if _err=1 then

set _count=_count+1;

end if;

set _row=_row+1;

end while;

select _count;

END;


 /**//**語句:

DECLARE CONTINUE HANDLER FOR SQLEXCEPTION,SQLWARNING,NOT FOUND set _err=1;

作用是當(dāng)遇到SQLEXCEPTION,SQLWARNING,NOT FOUND 錯誤時,設(shè)置_err=1并執(zhí)行CONTINUE操作,即繼續(xù)執(zhí)行后面的語句。

這就與c#中的try catch語法很像。

而且在執(zhí)行可能出錯的語句的時候我們用事務(wù)語句:START TRANSACTION; …… COMMIT; 可以保證完整性。

**/

|