如果在 ON EXCEPTION 语句中使用以关键字 SET 开头的语句,必须把它包括在 BEGIN ... END 语句块中。
下面的列表给出了一些以关键字 SET 开头的
SQL 语句:
- SET AUTOFREE
- SET CONNECTION
- SET CONSTRAINTS
- SET DATASKIP
- SET DEBUG FILE
- SET DEFERRED_PREPARE
- SET DESCRIPTOR
- SET ENCRYPTION
- SET ENVIRONMENT
- SET EXPLAIN
- SET INDEXES
- SET ISOLATION
- SET LOCK MODE
- SET LOG
- SET OPTIMIZATION
- SET PDQPRIORITY
- SET ROLE
- SET STATEMENT CACHE
- SET TABLE
- SET TRANSACTION
- SET TRIGGERS
下面的例子给出了 SET LOCK MODE 语句在 ON EXCEPTION 语句中的错误和正确用法。
下面的 ON EXCEPTION 语句返回了错误,因为 SET LOCK MODE 语句没有包括在 BEGIN ... END
语句块中:
ON EXCEPTION IN (-107)
SET LOCK MODE TO WAIT; -- error, value expected, not 'lock'
END EXCEPTION;
下面的 ON EXCEPTION 语句执行成功,因为 SET LOCK MODE 语句被包括在 BEGIN ... END
语句块中:
ON EXCEPTION IN (-107)
BEGIN
SET LOCK MODE TO WAIT; -- ok
END
END EXCEPTION;