跳到主要内容

异常处理的限制

seekdb 的 PL 功能在进行异常处理时存在使用限制。

seekdb 的 PL 功能在进行异常处理时需要注意如下使用限制:

  • SIGNALRESIGNALGET 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;