– 119 –
SQL с клавиатуры, а СУБД их выполняет. В этом случае последовательность
операций над базой данных определяется пользователем. Инструкции
SQL могут
встраиваться в программы, написанные на других языках программирования, и
тогда последовательность операций над базой данных определяется приложением.
С появлением хранимых процедур язык
SQL обогатился рядом дополни-
тельных базовых возможностей, обеспечиваемых практически всеми языками
программирования, что позволило писать на «расширенном
SQL» настоящие
программы и процедуры.
6.1. ХРАНИМЫЕ ПРОЦЕДУРЫ ИЛИ ФУНКЦИИ
Хранимые процедуры (в некоторых СУБД функции) – это скомпилирован-
ный набор
SQL-предложений, сохраненный в базе данных как именованный
объект и выполняющийся как единый фрагмент кода. Хранимые процедуры мо-
гут принимать и возвращать параметры. Когда пользователь создает хранимую
процедуру, сервер компилирует ее и помещает в разделяемый кэш, после чего
скомпилированный код может быть применен несколькими пользователями.
Когда приложение использует хранимую процедуру, оно
передает ей па-
раметры, если таковые ей потребуются, и сервер выполняет процедуру без пе-
рекомпиляции. Хранимая процедура позволяет повысить производительность
приложений.
Во-первых, по сравнению с обычными
SQL-запросами, посылаемыми из
клиентского приложения, они требуют меньше времени для подготовки к вы-
полнению, поскольку они скомпилированы и сохранены.
Во-вторых, сетевой трафик в этом случае меньше, чем в случае передачи
SQL-запроса, т.к. по сети передается меньшее количество данных.
Хранимые процедуры автоматически перекомпилируются, если с объекта-
ми, на которые они влияют, произведены какие-либо изменения; иными слова-
ми, они всегда актуальны. Хранимые процедуры обычно используются для
поддержки ссылочной целостности данных и реализации бизнес-правил. В по-
следнем случае достигается дополнительная
гибкость, поскольку если бизнес-
правила изменяются, можно изменить только текст хранимой процедуры, не
изменяя клиентские приложения.
В данном учебном пособии в качестве примера средства написания храни-
мых процедур будем рассматривать язык
PL/pgSQL, который используется в
СУБД
PostgreSQL. Язык PL/pgSQL позволяет группировать на сервере код SQL и
программные команды, что приводит к снижению затрат сетевых и коммуника-
ционных ресурсов, обусловленных частыми запросами данных со стороны кли-
ентских приложений и выполнением логической обработки этих данных на
удаленных хостах.
В программах
PL/pgSQL могут использоваться все типы данных, операторы
и функции
PostgreSQL. SQL в название PL/pgSQL указывает на то, что програм-
мист может напрямую использовать команды языка
SQL в своих программах.
Использование
SQL в коде PL/pgSQL расширяет возможности, а также повышает
гибкость и быстродействие программ. Несколько команд
SQL в программном