Книга: Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Вызов фильтров BLOB
Вызов фильтров BLOB
Преобразование из INPUT_TYPE В OTPUT_TYPE происходит автоматически, когда вызывается модуль MODULE_NAME с параметрами, которые были определены с корректными номерами подтипов.
Предположим, вы создаете библиотеку с именем filters.so или filters.dll, которая находится в допустимом для библиотек фильтров BLOB месте на сервере. В этой библиотеке у вас есть функция xmi_to_rtf, которая принимает BLOB, принимает текст, размеченный как XML, передает его программе, которая преобразует его в документ RTF, и, наконец, возвращает результат в новый BLOB. Вы сохраняете документы XML в BLOB SOB_TYPE -10, а тексты RTF в BLOB SUB_TYPE -15.
Во-первых, вы должны объявить фильтр BLOB В базе данных:
DECLARE FILTER XML2RTF /* ваш выбор имени */
INPUT_TYPE -10 /* текст, размеченный как XML */
OUTPUT_TYPE -15
/* текст RTF, форматированный по правилам компании */
ENTRY_POINT 'xml_to_rtf'
/* точка входа для подпрограммы преобразования */
MODULE_NAME 'filters';
/* имя библиотеки фильтров BLOB */
Теперь в вашем SQL или PSQL все, что вам нужно для автоматического вызова преобразования, это переменная или столбец базы данных, определенный как BLOB SUB_TYPE -10, содержащий ваш замечательный, правильный документ XML, и переменная или столбец подтипа -15 для получения конвертированного документа.
! ! !
СОВЕТ. Включенные в набор Firebird специальные внутренние фильтры BLOB выполняют преобразование подтипа 0 в подтип 1 (текст) и подтипа 1 в подтип 0. Эти фильтры также могут преобразовывать данные BLOB любого подтипа Firebird - например, BLR=2 в подтип 1 (текст), что может быть полезным для получения содержимого столбца системной таблицы в приложении управления базой данных. В подтипе 1 блоки сегментированы с первого символа до символа начала новой строки, со следующего символа до другого символа начала строки и т.д.
. ! .
- Новые функции API для работы с Blob и массивами
- Вызов хранимых процедур InterBase с использованием стандартного синтаксиса ODBC
- Системные вызовы и драйверы устройств
- Определение необходимого системного вызова
- Системные вызовы управления процессорной привязкой
- Вызовы функций
- Другие системные вызовы для управления файлами
- Вызов pipe
- Вызов справки из приложений
- Использование фильтров
- 21.4 Вызовы socket
- Вызов окна программного кода