Выбрать главу

o ffs e t1 IN INTEGER := 1,

offset2 IN INTEGER := 1

) RETURN INTEGER;

где

■ lobl и 1оЬ2 это LOB, которые нужно сравнить;

■ amount представляет собой максимальное число символов, которые

нужно прочитать из CLOB/NCLOB, или максимальное количество байтов,

которые нужно прочитать из BLOB/BFILE;

■ o ffs e tl и offset2 представляют собой смещения в символах или байтах

в lobl и 1оЬ2, с которых нужно начать сравнение (смещения начинаются

с 1).

Метод C0MPARE() возвращает

■ 0, если два L0B идентичны;

■ 1, если два L0B не идентичны;

■ Null, если

■ amount < 1,

■ amount > L0BMAXSIZE (Примечание: LOBMAXSIZE является максимальным

размером L0B),

■ o ffs e tl или offset2 < 1,

■ o ffs e tl или offset2 > LOBMAXSIZE.

504 Глава 14

В следующей таблице перечислены исключения, создаваемые C0MPARЕ().

Исключение Создаётся в случае

UNOPENED_FILE Файл ещё не был открыт.

NOEXIST_DIRECTORY Каталог не существует.

NOPRIV_DIRECTORY У вас нет прав доступа к каталогу.

INVALID_DIRECTORY Неправильный каталог.

INVALID OPERATION Файл существует, но у вас отсутствуют привилегии доступа к файлу.

C0PY()

Метод COPY ( ) копирует данные в указанном количестве символов или байтов

из исходного L0B в L0B назначения, начиная с указанных смещений.

Есть две версии COPY():

П DBMS_L0B.COPY(

dest_lob IN OUT NOCOPY BLOB,

src_lob IN BLOB,

amount IN INTEGER,

dest_offset IN INTEGER :=„1,

src_offset IN INTEGER':= 1

);

DBMS_L0B.C0PY(

dest_lob IN OUT NOCOPY CLOB/NCLOB CHARACTER SET ANY_CS,

src_lob IN CLOB/NCLOB CHARACTER SET dest_lob%CHARSET,

amount IN INTEGER,

dest_offset IN INTEGER := 1,

src_offset IN INTEGER := 1

);

где

■ dest_lob и src_lob это соответственно LOB для записи в и чтения из;

■ amount представляет собой максимальное число символов для чтения

из CLOB/NCL0B, или максимальное число байт для чтения из BLOB/

BFILE;

■ dest_offset и src_offset представляют собой смещения в символах

или байтах в d e stjob и srcjob, с которых нужно начать копирование

(смещения начинаются с 1).

В следующей таблице показаны исключения, создаваемые COPY().______

Исключение Создаётся в случае

VALUE_ERROR Любые из параметров равны NULL.

INVALID_ARGVAL Любое из условий:

■ src_offset < 1

■ dest_offset < 1

■ src_offset > LOBMAXSIZE

■ dest_offset > LOBMAXSIZE

■ amount < 1

■ amount > LOBMAXSIZE

Большие объекты 505

CREATETEMPORARY0

Метод CREATETEMPORARY() создаёт временный L0B во временном табличном

пространстве пользователя по умолчанию. Есть две версии CREATETEMPORARY():

□ DBMS_L0B.CREATETEMPORARY(

lob IN OUT NOCOPY BLOB,

cache IN BOOLEAN,

duration IN PLS_INTEGER := 10

);

DBMS_L0B.CREATETEMPORARY (

lob IN OUT NOCOPY CL0B/NCL0B CHARACTER SET ANY_CS,

cache IN BOOLEAN,

duration IN PLS_INTEGER := 10

);

где

■ lob - это временный LOB, который необходимо создать;

■ cache определяет^ должен ли L0B быть прочитан в кэш (true-е с ли да,

false - если нет);

■ duration указывает (может быть установлено в SESSION, TRANSACTION,

или CALL), когда следует удалить временный L0B: в конце сеанса,

транзакции или вызова (по умолчанию это SESSION).

В следующей таблице перечислены исключения, создаваемые

CREATETEMP0RARYO.

Исключение Создаётся в случае

VALUE_ERR0R Параметр lob равен null.

ERASEQ

Метод ERASEC) удаляет данные из L0B, начиная со смещения и в указанном

количестве символов или байтов. Есть две версии ERASE():

□ DBMS_L0B.ERASE(

lob IN OUT N0C0PY BLOB,

amount IN OUT N0C0PY INTEGER,

o ffs e t IN INTEGER := 1

);

DBMS_L0B.ERASE(

lob IN OUT N0C0PY CL0B/NCL0B CHARACTER SET ANY_CS,

amount IN OUT N0C0PY INTEGER,

o ffs e t IN INTEGER := 1

);

где

■ lob это LOB, который нужно удалить;

■ amount является максимальным числом символов для чтения из С LOB/

NCL0B или числом байтов для чтения из BLOB;

506 Глава 14

■ o ffse t является смещением в символах или байтах внутри lob, с которого

необходимо начать удаление (смещение начинается с 1).

В следующей таблице перечислены исключения, создаваемые ERASE().

Исключение_______ Создаётся в случае____________________________________

VALUE_ERROR Любые из параметров равны NULL.

INVALID_ARGVAL Любое из условий:

■ amount < 1

■ amount > LOBMAXSIZE

■ offset < 1

■ offset > LOBMAXSIZE ________________

FILECLOSE()

Метод FILECLOSE() закрывает BFILE. Вам следует использовать более новую

процедуру CLOSE(), так как корпорация Oracle не планирует в дальнейшем

поддерживать старую процедуру FILECLOSE(). Здесь FILECL0SEO рассматривается

только для понимания того, как работают более старые программы.

□ DBMS_L0B.FILECLOSEC

b flie IN OUT NOCOPY BFILE

);

где bf l ie - это BFILE, который нужно закрыть.

В следующей таблице перечислены исключения, создаваемые

FILECLOSE(). _______________________________________

Исключение Создаётся в случае

VALUE_ERROR Параметр bf lie равен NULL.

UNOPENED_FILE Файл ещё не был открыт.

NOEXIST_DIRECTORY Каталог не существует.