Mysql存款和储蓄进程(4)——极度管理

发布时间:2019-05-02  栏目:sqlite  评论:0 Comments

http://blog.csdn.net/crazylaa/article/details/5368421

突发性,不期望存款和储蓄进程抛出错误中止实施,而是期待回到1个错误码。 MySQL 协助尤其管理,通过定义 CONTINUE/EXIT 分外管理的 HANDLEEnclave 来捕获 SQLWA奥迪Q三NING/NOT
FOUND/SQLEXCEPTION (警告 /无数据 / 其余非常)。其中, FOENCORE 前面能够改为 SQLWALANDNING,
NOT FOUND,
SQLEXCEPTION 来提醒全体尤其都管理,相当于 oracle 中的 others 。举例,当不开始展览充裕管理时,以下代码将直接抛出三个 E猎豹CS六ROXC601062 (二三千) 错误:

         Sql code 4-1:

 

[c-sharp] view
plain
 copy

 

  1. CREATE PROCEDURE test_proc_ins1(  
  2.          IN i_id INT,  
  3.          IN i_name VARCHAR(100)  
  4. )  
  5. BEGIN  
  6.          INSERT INTO testproc VALUES (i_id,i_name);  
  7.          INSERT INTO testproc VALUES (i_id,i_name);  
  8. END;  

 

  经过非常管理后,能够幸免抛出荒唐,而是定义2个再次回到参数 o_ret 赋予特殊值来代表退步,那样,在java 代码中,能够透过获得再次来到值而不是捕获相当的办法来处管事人情逻辑。例如将再次回到值设置为 -一:

         Sql code 4-2:

 

[c-sharp] view
plain
 copy

 

  1. CREATE PROCEDURE test_proc_ins1(  
  2.          IN i_id INT,  
  3.          IN i_name VARCHAR(100),  
  4.          OUT o_ret INT)  
  5. BEGIN  
  6.          DECLARE EXIT HANDLER FOR SQLSTATE ‘23000’ set o_ret = -1;  
  7. — 也足以如此使用:  
  8. — DECLARE EXIT HANDLER FOR SQLWARNING,NOT FOUND,SQLEXCEPTION set o_ret=-1;  
  9.          INSERT INTO testproc VALUES (i_id,i_name);  
  10.          INSERT INTO testproc VALUES (i_id,i_name);  
  11.          set o_ret = 1;  
  12. END;   

留下评论

网站地图xml地图