SPL 的 ON EXCEPTION 语句中的 SET 关键字

如果在 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;