Все потоки
Поиск
Написать публикацию
Обновить

Как успешно мигрировать с Oracle на Postgres Pro Enterprise

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров2.4K
Всего голосов 13: ↑13 и ↓0+17
Комментарии8

Комментарии 8

Оффтопичный вопрос, не знаю куда с ним прикнуться. Почему в Postgres нет SQL-функции, выбрасывающей исключение?

Сейчас у меня почти в каждом проекте есть подобный код:

create or replace function pg_temp.raise_exception(s text)
returns text language plpgsql as
$$
begin
    raise exception '%', s;
end;
$$;

Это позволяет прямо из SQL-выражения выбрасывать исключение (например, когда очевидно что с данными обнаружилась какая-то беда).

Можно ли такую функцию внедрить как функцию SQL прямо в код движка или есть какой-то принципиальный момент не позволяющий этого? Причём, желательно иметь возможность также указать код ошибки (хочется внутри проекта определять свои кастомные коды, а не кодировать их внутри текстовой строки сообщения об ошибке)

Может я не понял вопрос, но разве это не оно?

Это PL/pgSQL - один из языков, встроенных в Postgres. Именно через него я в своём примере вызываю исключение.

А я бы хотел встроенную в сам язык SQL, такую же как sin()/cos() и т.д.

Гм, а в какой СУБД есть подобная функция?

Не знаю, может ни в какой. Это моя идея добавить такую функцию. Возможно(?) сделать загружаемое расширение которое её добавит

Смысл есть, он хотя бы в том что PL/pgSQL - это медленно. При первом вызове прямо видно как оно неторопливо ворочается.

Ответа на вопрос, поставленного в заголовки, в статье нет.

Назвали бы: ora2pg краткое описание возможностей.

Хотелось бы в статье увидеть обоснование выбора. Почему вообще Postgres? А не MySQL, например?

Postgres академичен и фитчаст, а MySQL при смерти (и Оракл не даст ему очухаться)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий