【问题标题】:Ignore an error that occurs in a redshift stored procedure忽略 redshift 存储过程中发生的错误
【发布时间】:2021-06-16 13:28:11
【问题描述】:

运行过程时我需要忽略错误,但错误似乎仍在传播。能不能随便吞下去?

CREATE OR REPLACE PROCEDURE myproc()
AS $$
BEGIN
  EXECUTE 'bad_statement;';
EXCEPTION WHEN OTHERS THEN
    NULL;
END;
$$ LANGUAGE plpgsql;

然后

call myproc();

将导致:

[2021-01-06 17:08:42] [42601][500310] Amazon 无效操作:“bad_statement”处或附近的语法错误;

在 postgres 中对其进行了测试,它正确地忽略了错误。

【问题讨论】:

    标签: amazon-redshift


    【解决方案1】:

    不幸的是,我认为没有办法做到这一点。亚马逊的文档状态

    在 Amazon Redshift 存储过程中,唯一支持的 handler_statement 是 RAISE。执行过程中遇到的任何错误都会自动结束整个存储过程调用并回滚事务。这是因为不支持子事务。

    如果异常处理块中发生错误,则将其传播出去,并且可以被外部异常处理块(如果存在)捕获。

    stored-procedure-trapping-errors

    【讨论】:

      猜你喜欢
      • 2012-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多