Вызовы функции ST_Geometry

Функции ST_Geometry в Oracle и PostgreSQL реализованы в языке структурированных запросов (SQL). Это язык уровня базы данных. В Oracle это процедурный язык структурированных запросов (PL/SQL). В PostgreSQL – это PL/pgSQL.

Когда вы обращаетесь к полям ST_Geometry с помощью SQL-функций, вы непосредственно обращаетесь к базе данных. Следовательно, база данных должна получить доступ к функциям ST_Geometry. В Oracle база данных также запускает процесс extproc.

PostgreSQL

Библиотека st_geometry должна находиться в директории установки PostgreSQL, чтобы позволить PostgreSQL получить доступ к функциям ST_Geometry. Вам необходимо скопировать файл st_geometry.dll (Windows) в папку lib в директории установки PostgreSQL. На сервере Linux: скопируйте файл st_geometry.so (Linux) в директорию /usr/lib/pgsql на сервере PostgreSQL. Оба этих файла находятся в папке DatabaseSupport для установленного клиентского приложения ArcGIS.

Oracle

Функции реализованы на языке PL/SQL, который вызывает функции из внешних файлов совместно используемых библиотек, написанных на языке программирования C. Функции вызываются из PL/SQL по псевдониму, который представляет собой соответствие между названием библиотеки — в случае с ST_Geometry в Oracle это ST_SHAPELIB — и именем файла библиотеки. (Для получения более подробных сведений о команде Oracle CREATE LIBRARY см. документацию). Когда в первый раз вызывается функция пространственного типа, для которой требуется ST_SHAPELIB, база данных запрашивает listener запустить процесс extproc для сессии SQL. Процессу extproc сообщается расположение ST_SHAPELIB, имя функции, которую необходимо вызвать, и ее параметры. Процесс extproc загружает ST_SHAPELIB и вызывает функцию. Когда внешняя функция завершает работу, extproc возвращает результаты и продолжает работать, ожидая новых вызовов функции во время текущей сессии. Процесс extproc завершается по завершении сессии SQL.

Для того чтобы данный механизм работал, необходима следующая конфигурация:

Связанные темы

9/11/2013