SQL 过程中的 SQLCODE 和 SQLSTATE 变量
可以使用 SQLCODE 和 SQLSTATE 变量来显示 SQL 过程执行期间可能出现的错误消息和代码。
您可能会发现,测试 SQLCODE 或 SQLSTATE 的值对于执行错误处理或帮助您调试 SQL 过程很有用。 可以将这些值作为输出参数或作为诊断消息字符串的一部分返回,也可以将这些值插入到表中以提供基本跟踪支持。
要在 SQL 过程中使用 SQLCODE 和 SQLSTATE 值,必须在 SQL 过程体中声明以下 SQL 变量:
DECLARE SQLCODE INTEGER DEFAULT 0;
DECLARE SQLSTATE CHAR(5 OCTETS) DEFAULT '00000';
每当执行语句时, Db2® 都会隐式设置这些变量。 如果语句出现存在对应处理程序的条件,那么会在处理程序执行开始时提供 SQLSTATE
和 SQLCODE 变量的值。 但是,执行处理程序中的第一个语句后这些变量会重置。 因此,通常会将 SQLSTATE 和 SQLCODE
的值复制到处理程序第一个语句的局部变量中。 在以下示例中,任何条件的 CONTINUE 处理程序用于将 SQLCODE 变量复制到另一个名为 retcode的变量中。 然后可在可执行语句中使用变量
retcode 来控制过程逻辑或将该值作为输出参数返回。
BEGIN
DECLARE SQLCODE INTEGER DEFAULT 0;
DECLARE retcode INTEGER DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND
SET retcode = SQLCODE;
executable-statements
END
注: 在 SQL 过程中访问 SQLCODE 或 SQLSTATE 变量时, Db2 将 SQLCODE 的值设置为 0 ,并将 SQLSTATE 的值设置为 "00000" 以用于后续语句。