Разница между функцией оракула, процедурами и функциями PostgreSQL, хранимыми процедурами? - PullRequest
0 голосов
/ 09 октября 2019

Может ли кто-нибудь сообщить мне, пожалуйста, разницу между функцией оракула, процедурами и функциями PostgreSQL, хранимыми процедурами?

1 Ответ

1 голос
/ 09 октября 2019

Этот вопрос слишком широкий, но я попытаюсь перечислить некоторые из основных отличий:

  • Они написаны на разных языках. В Oracle есть PL / SQL и Java, а в PostgreSQL вы можете использовать практически любой язык.

    PL / pgSQL в PostgreSQL является клоном PL / SQL, но между ними есть существенные различия.

  • Синтаксис операторов CREATE FUNCTION и CREATE PROCEDURE совершенно другой:

    • PostgreSQL имеет код в виде строкового литерала, а Oracle - нет.

    • Синтаксис объявления результатов функции немного отличается.

    • В обеих системах установлены возвращаемые функции (Orable называет их «конвейерными»), носинтаксис другой.

  • Oracle имеет огромный массив библиотек в своем словаре данных, что затрудняет обновление, но очень полезно для написания функций. В PostgreSQL этого мало, вы обычно пишете функции Perl или Python для взаимодействия с системой.

  • Поддержка процедур была недавно добавлена ​​в PostgreSQL (v11), поэтому они не являются функциональными- еще не завершено.

  • У вас не может быть управления транзакциями в функциях PostgreSQL, и вы не можете иметь то, что Oracle называет «автономной транзакцией»

    Вы можете обойти некоторые из этихограничения в некоторой степени, но это не то же самое.

  • Функции Oracle выполняются в пользовательском контексте владельца по умолчанию, в то время как в PostgreSQL по умолчанию их запускают в пользователеконтекст призывателя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...