Процедура, хранимая процедура, хранимая функция — программный код, который хранится в СУБД и вызывается по запросу пользователя или других процедур. Хранимые функции являются разновидностью хранимых процедур.
В большинстве СУБД существует свой язык создания процедур, в мощных СУБД зачастую процедуры можно разрабатывать на нескольких языках.
Основые языки:
Transact SQL (T-SQL) для Microsoft SQL;
PL/SQL для Oracle, PostgreSQL (для совместимости с Oracle);
PL/pgSQL, PL/Tcl, PL/Perl, PL/Python для PostgreSQL.
Оператор CREATE FUNCTION несколько отличается от оператора CREATE PROCEDURE. Эти отличия состоят в следующем:
В функциях допустимы только входные формальные параметры (типа IN). В связи с этим при описании формальных параметров не используются служебные слова IN, OUT и INOUT.
После описания формальных параметров функции должен следовать оператор RETURNS. Данный оператор указывает тип возвращаемого функцией значения.
В теле функции обязательно должен присутствовать оператор RETURN, который специфицирует возвращаемое функцией значение.
Функция не может формировать результирующее множество.
Вызов Функции должен осуществляться там, где требуется выражение, формирующее значение. В связи с этим, функции могут непосредственно использоваться в выражениях. Например, они могут применяться в арифметических выражениях, вместо фактических параметров процедур или функций, а также прямо в составе SQL-операторов. Все эти качества позволяют в значительной степени расширить функциональные возможности языка SQL, как средства разработки приложений.