Может ли кто-нибудь сообщить мне, пожалуйста, разницу между функцией оракула, процедурами и функциями PostgreSQL, хранимыми процедурами?
Этот вопрос слишком широкий, но я попытаюсь перечислить некоторые из основных отличий:
Они написаны на разных языках. В Oracle есть PL / SQL и Java, а в PostgreSQL вы можете использовать практически любой язык.
PL / pgSQL в PostgreSQL является клоном PL / SQL, но между ними есть существенные различия.
Синтаксис операторов CREATE FUNCTION и CREATE PROCEDURE совершенно другой:
CREATE FUNCTION
CREATE PROCEDURE
PostgreSQL имеет код в виде строкового литерала, а Oracle - нет.
Синтаксис объявления результатов функции немного отличается.
В обеих системах установлены возвращаемые функции (Orable называет их «конвейерными»), носинтаксис другой.
Oracle имеет огромный массив библиотек в своем словаре данных, что затрудняет обновление, но очень полезно для написания функций. В PostgreSQL этого мало, вы обычно пишете функции Perl или Python для взаимодействия с системой.
Поддержка процедур была недавно добавлена в PostgreSQL (v11), поэтому они не являются функциональными- еще не завершено.
У вас не может быть управления транзакциями в функциях PostgreSQL, и вы не можете иметь то, что Oracle называет «автономной транзакцией»
Вы можете обойти некоторые из этихограничения в некоторой степени, но это не то же самое.
Функции Oracle выполняются в пользовательском контексте владельца по умолчанию, в то время как в PostgreSQL по умолчанию их запускают в пользователеконтекст призывателя.