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 Каталог не существует.