就是如何判断select insert update delete操作的成功与否是否出错。
以前项目从来没用过存储过程。很多开源的软件也没有。
所以就疏忽这块内容。现在想补充学习其他之前没用过的其他技术。
以提高以后项目在数据库操作方面的效率。看了几章手册的内容,感觉受益匪浅。还在继续学习中。
言归正传。执行select insert update delete操作,如何判断执行情况。知道dml有个ROW_COUNT(),可以用来判断吗,还有其他办法吗。结合DECLARE HANDLER FOR 使用吗。谢谢。

解决方案 »

  1.   

    insert 可以返回ID,insert_id
      

  2.   

    用DECLARE HANDLER捕获错误
    DECLARE Handlers
    DECLARE handler_type HANDLER FOR condition_value[,...] statementhandler_type:
        CONTINUE
      | EXIT
      | UNDOcondition_value:
        SQLSTATE [VALUE] sqlstate_value
      | condition_name
      | SQLWARNING
      | NOT FOUND
      | SQLEXCEPTION
      | mysql_error_code
      

  3.   

    嗯这个我知道 last_insert_id();
    谢谢
      

  4.   

    简单示例:
     BEGIN
     DECLARE CONTINUE HANDLER FOR 1216 select
     'Foreign key constraint violated';
     INSERT INTO departments (department_name,manager_id,location)
     VALUES ('Elbonian HR','Catbert','Catbertia');
    END;
      

  5.   

    你可以根据系统变量
    error_count 来了解是否有错误。
      

  6.   

    我一般是在客户端调用存储过程时,用try catch判断,控制事务提交或回滚这样就不需要在存储过程内部逐语句去判断了。