ТИПЫ БОЛЬШИХ ДАННЫХ: BLOB и CLOB

До OpenEdge 10 работа с данными ограничивалась максимальным объемом 32K. В OpenEdge 10 были введены новые типы данных, которые позволили работать с объемами данных превышающие данное ограничение.

BLOB (Binary Large Object) - тип данных предназначен для хранение больших бинарных данных, таких как картинки, аудио - видео записи и т.д.

CLOB (Character Large Object) - тип данных предназначен для хранения больших текстовых данных заданной кодировки.

Третьим типом данных для работы с большими объемами данных, появившемся с OpenEdge 10 является тип LONGCHAR, но о нем мы уже говорили.

Стоит отметить, что в отличие от типа данных LONGCHAR, типы данных BLOB и CLOB могут быть определены только для полей таблиц и не могут быть определены для переменных.


РАБОТА С ТИПАМИ БОЛЬШИХ ДАННЫХ


COPY-LOB осуществляет копирование больших типов данных. При этом невозможно напрямую осуществлять копирование данных между типами BLOB и CLOB. Для этого необходимо скопировать данные из CLOB или BLOB источников в MEMPTR или LONGCHAR с преобразованием данных, а впоследствии уже осуществить копирование из MEMPTR или LONGCHAR в CLOB или BLOB.

COPY-LOB [FROM]{[OBJECT] source-lob | FILE source-filename}
            [STARTING AT n] [FOR length]
         TO {[OBJECT] target-lob} [OVERLAY AT n [TRIM]] |
            FILE target-filename [APPEND]}
         [NO-COVERT | CONVERT {[SOURCE CODEPAGE codepage]
                               [TARGET CODEPAGE codepage]}]

         [NO-ERROR].

FROM - определяет источник данных для копирования:

[OBJECT] source-lob - определяет источник данных для копирования в качестве которого может выступать переменные MEMPTR или LONGCHAR типа, либо поля таблиц типов BLOB и CLOB.

FILE source-filename - определяет имя файла, содержимое которого необходимо скопировать.

STARTING AT n - определяет целочисленное значение позиции, с которой начинается чтение данных из источника. Если позиция не определена, то по умолчанию она принимается равное 1. Для байтовых типов данных таких как BLOB или MEMPTR стартовая позиция определяет позицию байта, а для текстовых типов, таких как CLOB или LONGCHAR - позицию символа с которого начинается чтение данных.

FOR length - определяет целочисленное значение байт для байтовых источников данных, или количество символов для текстовых типов, которое необходимо скопировать. По умолчанию, читаются все данные до конца.

ТО - определяет приемник копируемых данных:

[OBJECT] target-lobопределяет приемник копируемых данных, в качестве которого могут выступать переменные MEMPTR или LONGCHAR типа, либо поля таблиц типов BLOB и CLOB.

OVERLAY AT n [TRIM]определяет целочисленное значение позиции, с которой начинается вставка копируемых данных в источник. Если позиция не определена, то по умолчанию она принимается равное 1. Для байтовых типов данных, таких как BLOB или MEMPTR, стартовая позиция определяет позицию байта, а для текстовых типов, таких как CLOB или LONGCHAR - позицию символа с которого начинается вставка данных.

FILE target-filename [APPEND] - определяет имя файла, в который осуществляется копирование данных. 

NO-CONVERT - не осуществлять конвертацию копируемых данных.

CONVERT {[SOURCE CODEPAGE codepage] [TARGET CODEPAGE codepage]} - осуществляет конвертацию копируемых данных.

Представленный ниже код загрузит содержимое файла test.xml в переменную iXML.

DEF VAR iXML      AS LONGCHAR NO-UNDO.
COPY-LOB FROM  FILE "./test.xml" TO iXML NO-CONVERT. 
Вы здесь: Главная Основы ABL ТИПЫ БОЛЬШИХ ДАННЫХ: BLOB и CLOB