我正在尝试制作一个简单的脚本来处理可以正常失败的语句中的错误。这适用于 DB2 v10.5 (Linux)
示例创建一个表并处理如果表已经存在
begin
DECLARE CONTINUE HANDLER FOR SQLSTATE '42710' BEGIN END;
EXECUTE IMMEDIATE 'CREATE TABLE T(c1 INT)';
end
/
这工作正常
现在我有一个稍微复杂一点的块,它最初使用局部变量,我试图添加 DECLARE CONTINUE HANDLER,但我无法编译它。简化问题我发现,如果我有 Handler 行,则在开始之前添加声明语句会失败(注意我在这里没有使用 localVariable,但仅通过添加该语句就会失败。如果我在没有 DECLARE CONTINUE HANDLER 的情况下运行相同的语句,它也运行正常
declare
localVariable INT;
begin
DECLARE CONTINUE HANDLER FOR SQLSTATE '42710' BEGIN END;
EXECUTE IMMEDIATE 'CREATE TABLE T(c1 INT)';
end
/
产生的错误代码
错误报告:DB2 SQL 错误:SQLCODE=-104, SQLSTATE=42601, SQLERRMC=end;end;BEGIN, DRIVER=3.68.61