Определение, из википедии :
Хранимая процедура - это подпрограмма, доступная для приложений, которые
получить доступ к системе реляционной базы данных.
Преимущества хранимых процедур в целом, из википедии :
Затраты: Поскольку операторы хранимых процедур хранятся непосредственно в
базе данных, они могут удалить все или часть издержек компиляции
что обычно требуется в ситуациях, когда программные приложения
отправлять встроенные (динамические) запросы SQL в базу данных. (...)
Предотвращение сетевого трафика: Основное преимущество с помощью хранимых процедур
является то, что они могут работать непосредственно в ядре базы данных. В
производственная система, это обычно означает, что процедуры запускаются
полностью на специализированном сервере базы данных, который имеет прямой доступ к
данные, к которым осуществляется доступ. Преимущество здесь в том, что сеть
Затраты на связь можно полностью избежать. Это становится
особенно важно для сложных серий операторов SQL.
Инкапсуляция бизнес-логики: Хранимые процедуры позволяют программистам
встроить бизнес-логику как API в базу данных, что может упростить
управление данными и уменьшить необходимость кодирования логики в другом месте в
клиентские программы. (...)
Делегирование прав доступа: Во многих системах хранимые процедуры могут быть
предоставил права доступа к базе данных, которые пользователи, которые выполняют те
процедуры напрямую не имеют.
Некоторая защита от SQL-атак: Хранимые процедуры могут быть
используется для защиты от инъекционных атак. Параметры хранимой процедуры
будет рассматриваться как данные, даже если злоумышленник вставит команды SQL. (...)
В PostgresSQL хранимые процедуры называются пользовательскими функциями .
Пример определения:
CREATE FUNCTION somefunc(quantity integer) RETURNS integer AS $$
DECLARE
myvariable integer := 2;
BEGIN
RETURN quantity * myvariable;
END;
$$ LANGUAGE plpgsql;
(Вы можете использовать другие языки для определения хранимых функций в PostgreSQL)
Пример вызова:
SELECT somefunc(100);
Подробнее: http://www.postgresql.org/docs/9.1/static/server-programming.html