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

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

Листинг 11.1. Создание обработчика вызовов PL/pgSQL.

booktown=# CREATE FUNCTION plpgsql_call_handler ()
booktown-# RETURNS OPAQUE
booktown-# AS '/usr/local/pgsql/lib/plpgsql.so'
booktown-l LANGUAGE 'C';
CREATE

В листинге 11.1 создается только обработчик, а поддержка языка включается командой CREATE LANGUAGE. Синтаксис включения PL/pgSQL в базу данных:

CREATE LANGUAGE 'plpgsqV HANDLER plpgsql_call_handler
LANCOMPILER 'PL/pgSQL'

Здесь pipgsql – обозначение языка, pipgsql_calI_handIer – имя обработчика, созданного командой CREATE FUNCTION (см. листинг 11.1), а строковая константа PL/pgSQL, следующая за ключевым словом LANCOMPILER, содержит произвольное описание.

В листинге 11.2 команда CREATE LANGUAGE включает в базу данных booktown поддержку PL/pgSQL.

Листинг 11.2. Включение поддержки PL/pgSQL командой CREATE LANGUAGE.

booktown=# CREATE LANGUAGE 'plpgsql' HANDLER pipgsql_call_handler
booktown-# LANCOMPILER 'PL/pgSQL';
CREATE

За ключевым словом HANDLER указывается то же имя, которое было указано при создании обработчика вызовов. В листинге 11.1 создавался обработчик с именем pipgsql_call_handler, поэтому в листинге 11.2 используется то же имя.

Секция LANCOMPILER считается устаревшей, она унаследована от старых версий и ни на что не влияет. Несмотря на это, в PostgreSQL 7.1.x эта секция является обязательной. Обычно в ней вводится краткое описание языка.

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

Приложение createlang запускается в режиме командной строки. Если имя пользователя операционной системы, с которым вы зарегистрированы в настоящий момент, совпадает с именем суперпользователя целевой базы данных, для вызова createlang можно воспользоваться командой, приведенной в листинге 11.3 (при необходимости вам будет предложено ввести пароль). В противном случае имя суперпользователя базы данных передается приложению createlang с флагом – U, как показано в листинге 11.4.

Листинг 11.3. Использование приложения createlang суперпользователем базы данных.

$ cd /usr/local/pgsql/bin
booktown=# createlang plpgsql booktown

Листинг 11.4. Передача имени суперпользователя при вызове createlang.

$ cd /usr/local/pgsql/bin
$ createlang plpgsql – U manager booktown

При успешном завершении программа createlang возвращает управление режиму командной строки без какого-либо вывода.

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