+ -
当前位置:首页 → 问答吧 → mysql存储过程如何判断dml和dql执行的状态

mysql存储过程如何判断dml和dql执行的状态

时间:2011-09-21

来源:互联网

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

作者: kxn308   发布时间: 2011-09-21

insert 可以返回ID,insert_id

作者: RXPY2007   发布时间: 2011-09-21

用DECLARE HANDLER捕获错误
DECLARE Handlers
DECLARE handler_type HANDLER FOR condition_value[,...] statement

handler_type:
  CONTINUE
  | EXIT
  | UNDO

condition_value:
  SQLSTATE [VALUE] sqlstate_value
  | condition_name
  | SQLWARNING
  | NOT FOUND
  | SQLEXCEPTION
  | mysql_error_code

作者: wwwwb   发布时间: 2011-09-21

引用 1 楼 rxpy2007 的回复:

insert 可以返回ID,insert_id

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

作者: kxn308   发布时间: 2011-09-21

引用 2 楼 wwwwb 的回复:

用DECLARE HANDLER捕获错误
DECLARE Handlers
DECLARE handler_type HANDLER FOR condition_value[,...] statement

handler_type:
CONTINUE
| EXIT
| UNDO

condition_value:
SQLSTATE [VALUE] s……

手册上的这个我也见过
实例能给一个最好了,不要手册的,手册的那个明白了。
对了 突然想到
这个处理程序后面可以给一个 语句 
那么就可以加个变量判断。
谢了

作者: kxn308   发布时间: 2011-09-21

简单示例:
 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;

作者: wwwwb   发布时间: 2011-09-21

你可以根据系统变量
error_count 

来了解是否有错误。

作者: ACMAIN_CHM   发布时间: 2011-09-21

我一般是在客户端调用存储过程时,用try catch判断,控制事务提交或回滚

这样就不需要在存储过程内部逐语句去判断了。

作者: wfevgch   发布时间: 2011-09-21

相关阅读 更多

热门下载

更多