Альтернативы исключений Oracle UTL_FILE в Postgres

Я переношу хранимую процедуру Oracle в AWS Aurora Postgres, которая имеет UTL_FILE операций для чтения и записи во внешние файлы. В части Exception я использую все эти типы исключений. UTL_FILE.invalid_path, UTL_FILE.invalid_operation, UTL_FILE.invalid_mode, UTL_FILE.read_error, UTL_FILE.write_error и WHEN OTHERS.

Можно ли обрабатывать все эти исключения в Postgres или мне следует использовать расширение orafce?


person Manoharan    schedule 17.07.2020    source источник
comment
Я не знаю подробно AWS Aurora Postgres, но это должен быть Postgres с другим хранилищем. Если у Aurora Postgres есть UTL_FILE, то, скорее всего, это от предустановленного расширения Orafce.   -  person Pavel Stehule    schedule 21.07.2020


Ответы (1)


Насколько я знаю, 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".

person Pavel Stehule    schedule 21.07.2020