![]() |
![]() |
![]() |
CREATE LANGUAGE Определение нового языка, используемого при создании функций. Синтаксис CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE 'язык' HANDLER обработчик LANCOMPILER 'комментарий' Параметры
Результаты
Описание Команда CREATE LANGUAGE загружает новый процедурный язык в подключенную базу данных. Она используется с процедурными языками, указанными с ключом - -with-язык при первоначальной установке PostgreSQL. Например, для включения поддержки pltcl следует передать ключ - -with-tcl в процессе конфигурирования PostgreSQL. После выполнения этой команды вы сможете создавать новые функции на добавленном языке. Команда CREATE LANGUAGE может выполняться только суперпользователем. В PostgreSQL 7.1.x (последней версии на момент написания книги) модификация созданных языков не поддерживается. Чтобы изменить определение процедурного языка, необходимо удалить его из базы данных командой DROP LANGUAGE и создать заново. ПРИМЕЧАНИЕ Если команда CREATE LANGUAGE создает язык в базе данных templatel, поддержка этого языка будет автоматически включаться во все базы данных, созданные на основе этого шаблона (используемого по умолчанию). Чтобы процедурный язык мог использоваться в PostgreSQL, для него должен быть написан специальный обработчик вызовов, откомпилированный в двоичный формат. Следовательно, для написания обработчиков требуются только компилируемые языки (такие, как С и C++). Обработчик вызовов также должен быть отдельно определен в PostgreSQL как функция, вызываемая без аргументов и возвращающая тип opaque. Подобное определение обработчика предотвращает непосредственный вызов функции в командах SQL. Примеры При выполнении команды CREATE LANGUAGE обработчик для соответствующего языка должен быть создан заранее. Регистрация процедурных языков начинается с создания функции, задающей местонахождение объектного кода обработчика. В следующем фрагменте создается обработчик, объектный код которого находится в файле /usr/local/pgsql/lib/libexample.so: booktown=# CREATE FUNCTION example_call_handler ( ) RETURNS opaque booktown-# AS '/usr/local/pgsql/lib/libexample.so' booktown-# LANGUAGE 'C'; CREATE На втором этапе командой CREATE LANGUAGE существующий язык загружается в подключенную базу данных. В следующем примере создается язык plexample, использующий обработчик из предыдущего примера: booktown=# CREATE PROCEDURAL LANGUAGE 'piexample' booktown-# HANDLER example_call_handler booktown-# LANCOMPILER 'My Example': CREATE |
![]() |
![]() |
![]() |