我正在将一个Oracle存储过程迁移到AWS Aurora Postgres,它具有读取和写入外部文件的UTL_FILE
操作。在异常部分,我使用了所有这些异常类型。UTL_FILE.invalid_path
、UTL_FILE.invalid_operation
、UTL_FILE.invalid_mode
、UTL_FILE.read_error
、UTL_FILE.write_error
和WHEN OTHERS
。
有可能在Postgres中处理所有这些异常吗?还是应该使用orafce
扩展?
据我所知,AWS Aurora Postgres也使用Orafce
https://aws.amazon.com/about-aws/whats-new/2020/06/amazon-aurora-supports-postgresql-versions-117-1012-and-9617-and-adds-global-database-for-postgresql-117/
Postgres没有像Oracle那样自定义命名异常,所以你必须稍微重写你的代码,你必须检查错误消息——例如,Oracle的UTL_FILE.write_error
是Postgres的RAISE异常(名为raise_exception
-P0001(,错误消息(可在SQLERRM
变量中或通过GET STACKED DIAGNOSTICS
获得(是"UTL_FILE_WRITE_ERROR"
。