异常处理的限制
seekdb 的 PL 功能在进行异常处理时存在使用限制。
seekdb 的 PL 功能在进行异常处理时需要注意如下使用限制:
-
SIGNAL、RESIGNAL和GET DIAGNOSTICS不允许作为 Prepared Statement。如下示例中的语句是无效的:PREPARE stmt1 FROM 'SIGNAL SQLSTATE "42000"'; -
'04' 类的
SQLSTATE值没有被特殊处理,因此处理方式与其他异常相同。 -
在标准 SQL 中,第一个条件应该与前一条 SQL 语句所返回的
SQLSTATE值相关,但是不能保证总是如此,所以不能通过如下语句获得主要的错误信息:GET DIAGNOSTICS CONDITION 1 @err_no = MYSQL_ERRNO;而是建议使用如下的方式:
GET DIAGNOSTICS @count_no = NUMBER;
GET DIAGNOSTICS CONDITION @count_no @err_no = MYSQL_ERRNO;