Иллюстрированный самоучитель по PostgreSQL

Поддержка PL/pgSQL

PL/pgSQL относится к семейству процедурных языков и обладает определенным сходством с процедурным языком Oracle, PL/SQL. Процедурным языком называется язык программирования, в котором желаемый результат достигается последовательностью тэгов.

Язык PL/pgSQL позволяет группировать на сервере код SQL и программные команды, что приводит к снижению затрат сетевых и коммуникационных ресурсов, обусловленных частыми запросами данных со стороны клиентских приложений и выполнением логической обработки этих данных на удаленных хостах.

В программах PL/pgSQL могут использоваться все типы данных, операторы и функции PostgreSQL. "SQL" в название PL/pgSQL указывает на то, что программист может напрямую использовать команды языка SQL в своих программах. Использование SQL в коде PL/pgSQL расширяет возможности, а также повышает гибкость и быстродействие программ. Несколько команд SQL в программном блоке PL/pgSQL выполняются за одну операцию вместо обычной обработки каждой команды.

Другой важной особенность PL/pgSQL является хорошая адаптируемость программ; функции языка совместимы со всеми платформами, на которых работает СУБД PostgreSQL.

Эта глава посвящена использованию процедурного языка PL/pgSQL при работе с базами данных.


Поддержка языков программирования реализуется отдельным объектом базы данных. Таким образом, прежде чем использовать язык PL/pgSQL, необходимо включить его поддержку в базу данных (по умолчанию PL/pgSQL устанавливается вместе с PostgreSQL). В этом разделе описана процедура включения PL/pgSQL в существующую базу данных.

Поддержка PL/pgSQL в базах данных PostgreSQL включается либо приложением createlang в командной строке, либо командой SQL CREATE LANGUAGE в клиенте (например, в psql). Команда CREATE LANGUAGE требует предварительного создания обработчика вызовов PL/pgSQL – функции, которая занимается непосредственной обработкой и интерпретацией кола PL/pgSQL.

С утилитой createlang проще работать, потому что она абстрагирует от пользователя создание обработчика вызовов и языка, но ниже будут описаны оба способа.

Примечание
Установка PL/pgSQL в базе данных templatel приводит к тому, в дальнейшем PL/pgSQL автоматически устанавливается во всех базах данных, создаваемых на основе шаблона templatel (используемого по умолчанию)
.

Включение поддержки PL/pgSQL при помощи psql

Команда SQL CREATE LANGUAGE предназначена для включения поддержки процедурных языков в текущую базу данных. Тем не менее перед вызовом этой команды необходимо предварительно создать обработчик вызовов функцией CREATE FUNCTION. Синтаксис создания обработчика вызовов PL/pgSQL командой CREATE FUNCTION:

CREATE FUNCTION plpgsql_call_handler()
RETURNS OPAQUE AS '/библиот-ека_р05£дге5/р1 pgsql.so1 LANGUAGE 'C'

Параметр библиотека jjostgres определяет абсолютный системный путь к установленным библиотечным файлам PostgreSQL. По умолчанию это путь /usr/local/psql/lib. В листинге 11.1 приведен пример создания обработчика вызовов PL/pgSQL функцией CREATE FUNCTION (предполагается, что файл plpgsql.so находится в каталоге по умолчанию).

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.