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 фильтров.

docnext count = 7

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

Подтип может быть задан в виде номера подтипа или мнемоники подтипа.Пользовательские подтипы должны быть представлены отрицательными числами (от -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 позволяет изменить ограничения доступа к библиотекам фильтров.

Кто может создать BLOB фильтр?

Выполнить оператор DECLARE FILTER могут:

Пользователь, создавший BLOB фильтр, становится его владельцем.

Примеры

Example 1. Создание BLOB фильтра с использованием номеров подтипов
DECLARE FILTER DESC_FILTER
INPUT_TYPE 1
OUTPUT_TYPE -4
ENTRY_POINT 'desc_filter'
MODULE_NAME 'FILTERLIB';
Example 2. Создание BLOB фильтра с использованием мнемоник подтипов
DECLARE FILTER FUNNEL
INPUT_TYPE blr OUTPUT_TYPE text
ENTRY_POINT 'blr2asc' MODULE_NAME 'myfilterlib';
См. также:

DROP FILTER.

DROP FILTER

Назначение

Удаление объявления BLOB фильтра.

Доступно в

DSQL, ESQL

Синтаксис
DROP FILTER filtername
Table 1. Параметры оператора DROP FILTER
Параметр Описание

filtername

Имя BLOB фильтра.

Оператор DROP FILTER удаляет объявление BLOB фильтра из базы данных.Удаление BLOB фильтра из базы данных делает его не доступным из базы данных, при этом динамическая библиотека, в которой расположена функция преобразования, остаётся не тронутой.

Кто может удалить BLOB фильтр?

Выполнить оператор DROP FILTER могут:

Примеры

Example 1. Удаление BLOB фильтра
DROP FILTER DESC_FILTER;
См. также:

DECLARE FILTER.