FirebirdSQL logo

BLOB фильтр — объект базы данных, являющийся, по сути, специальным видом внешних функций с единственным назначением: получение объекта BLOB одного формата и преобразования его в объект BLOB другого формата.Форматы объектов BLOB задаются с помощью подтипов BLOB.

Внешние функции для преобразования BLOB типов хранятся в динамических библиотеках и загружаются по необходимости.

Подробнее о подтипах BLOB см.в разделе Бинарные типы данных.

DECLARE FILTER

Назначение

Объявление в базе данных BLOB фильтра.

Доступно в

DSQL, ESQL

Синтаксис
DECLARE FILTER filtername
INPUT_TYPE <sub_type> OUTPUT_TYPE <sub_type>
ENTRY_POINT 'function_name' MODULE_NAME 'library_name';

<sub_type> ::= number | <mnemonic>

<mnemonic> ::= binary | text | blr | acl | ranges | summary |
               format | transaction_description |
               external_file_description | user_defined
Table 1. Параметры оператора DECLARE FILTER
Параметр Описание

filtername

Имя фильтра.Может содержать до 63 символов.

sub_type

Подтип BLOB.См. Подтипы BLOB.

number

Номер подтипа BLOB.См. Подтипы BLOB.

mnemonic

Мнемоника подтипа BLOB.См. Подтипы BLOB.

function_name

Имя экспортируемой функции (точка входа).

library_name

Имя модуля, в котором расположен фильтр.

user_defined

Определяемая пользователем мнемоника подтипа BLOB.

Оператор DECLARE FILTER делает доступным BLOB фильтр в базе данных.Имя BLOB фильтра должно быть уникальным среди имён BLOB фильтров.

Задание подтипов

Подтип может быть задан в виде номера подтипа или мнемоники подтипа.Пользовательские подтипы должны быть представлены отрицательными числами (от -1 до -32768). Не допускается создание двух и более фильтров BLOB с одинаковыми комбинациями входных и выходных типов.Объявление фильтра с уже существующими комбинациями входных и выходных типов BLOB приведёт к ошибке.

Предложение INPUT_TYPE идентифицирует тип преобразуемого объекта (подтип BLOB).

Предложение OUTPUT_TYPE идентифицирует тип создаваемого объекта.

Note

Если вы хотите определить мнемоники для собственных подтипов BLOB, вы можете добавить их в системную таблицу RDB$TYPES, как показано ниже.После подтверждения транзакции мнемоники могут быть использованы для декларации при создании новых фильтров.

INSERT INTO RDB$TYPES (RDB$FIELD_NAME, RDB$TYPE, RDB$TYPE_NAME)
VALUES ('RDB$FIELD_SUB_TYPE', -33, 'MIDI');

Значение поля rdb$field_name всегда должно быть 'RDB$FIELD_SUB_TYPE'. Если вы определяете мнемоники в верхнем регистре, то можете использовать их без учёта регистра и без кавычек при объявлении фильтра.

Параметры DECLARE FILTER

Предложение ENTRY_POINT указывает имя точки входа (имя экспортируемой функции) в модуле.

Предложение MODULE_NAME задаёт имя модуля, в котором находится экспортируемая функция.По умолчанию модули должны располагаться в папке UDF корневого каталога сервера.Параметр UDFAccess в файле firebird.conf позволяет изменить ограничения доступа к библиотекам фильтров.