要捕获错误,请将一组语句包含在以 BEGIN 与 END 标记的语句块中,并在该语句块的 开头添加 ON EXCEPTION IN 语句。如果在跟在 ON EXCEPTION 语句之后的块中发生 错误,则您可采取恢复措施。 下图展示语句块内的 ON EXCEPTION 语句。 图: 捕获错误。 BEGIN DEFINE c INT; ON EXCEPTION IN ( -206, -- 表不存在 -217 -- 列不存在 ) SET err_num
IF err_num = -206 THEN CREATE TABLE t (c INT); INSERT INTO t VALUES (10); -- 在插入语句之后继续 ELSE ALTER TABLE t ADD(d INT); LET c = (SELECT d FROM t); -- 在选择语句之后继续 END IF END EXCEPTION WITH RESUME
INSERT INTO t VALUES (10); -- 如果 t 不存在,则失败
LET c = (SELECT d FROM t); -- 如果 d 不存在,则失败 END 当发生错误时,SPL 解释器搜索捕获该错误的最内层 ON EXCEPTION 声明。捕获错误之 后的第一个操作是重置该错误。当完成错误操作代码的执行时,且如果引起错误的 ON EXCEPTION 声明包括了 WITH RESUME 关键字,则以跟在产生了该错误的语句之后的 语句自动地恢复执行。如果 ON EXCEPTION 声明未包括 WITH RESUME 关键字,则执 行完全地退出当前的块。