Redshift存储过程执行动态SQL时,是否可以使用错误异常处理来恢复工作并继续处理?

0

【以下的问题经过翻译处理】 在基于Redshift存储过程的解决方案中,一个基于表的数据质量评估功能运行了许多动态SQL语句。为了支持更复杂的规则定义,用户可以预先注册一个SQL语句,该语句可能包含语法错误,导致运行时异常!

可以使用EXCEPTION WHEN OTHERS子句捕获失败,但是因为异常在退出子过程时重新抛出,因此所有(有用的)工作在异常之前执行的工作都会回滚。

是否有可能在处理异常后,防止重新抛出(和随之的回滚),以便该过程可以继续评估其余规则?

似乎这在技术上是不可能的,因为Redshift存储过程不支持子事务......并且在为了开始异常处理程序事务而预先取消运行事务之后,没有回头的可能性吗?希望在每个EXECUTE之前使用COMMIT WORK只解决了部分问题,因为调用者在(第一个)异常发生后会中止!

是否有其他最佳实践,可以帮助解决这种问题?

profile picture
专家
已提问 5 个月前2 查看次数
1 回答
0

【以下的回答经过翻译处理】 目前Redshift不支持您正在尝试实现的行为。但是,我已经代表您向服务团队提出了功能请求。尽管我无法评论此功能何时可能发布,但我建议您密切关注我们的[What's New]和[Blog]页面,以获取任何新功能的公告。另外,有关错误捕获和事务管理的信息,请查阅[ Trapping errors ]和[ Transaction Management ]页面。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则