Обновить

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

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров2.7K
Всего голосов 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 при смерти (и Оракл не даст ему очухаться)

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

Информация

Сайт
www.postgrespro.ru
Дата регистрации
Дата основания
Численность
501–1 000 человек
Местоположение
Россия
Представитель
Иван Панченко