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

0

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

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

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

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

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

profile picture
EXPERTE
gefragt vor 6 Monaten3 Aufrufe
1 Antwort
0

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

profile picture
EXPERTE
beantwortet vor 6 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen