Поделиться через


OracleLob.SetLength(Int64) Метод

Определение

Задает длину потока OracleLob меньше текущей длины.

public:
 override void SetLength(long value);
public override void SetLength (long value);
override this.SetLength : int64 -> unit
Public Overrides Sub SetLength (value As Long)

Параметры

value
Int64

Необходимая длина текущего потока OracleLob в байтах. Для типов данных CLOB и NCLOB это число должно быть четным.

Исключения

Значение, указанное в параметре value для типа данных CLOB или NCLOB, не является четным.

-или-

Значение, указанное в параметре value, меньше нуля или больше 4 гигабайт.

Операция выполняется не в рамках транзакции, объект OracleLob является пустым, или же закрыто подключение.

Объект был закрыт или уничтожен.

Произошла ошибка Oracle.

Комментарии

Попытка увеличить длину потока завершается сбоем и возвращает сообщение "Сообщение: ORA-22926: указанная длина обрезки больше, чем длина текущего OracleLob значения бизнес-объекта" с сервера Oracle.

Поток должен поддерживать как запись, так и поиск для функционирования SetLength .

Поставщик данных платформа .NET Framework для Oracle обрабатывает все CLOB данные и NCLOB в формате Юникода. Поэтому при доступе к типам CLOB данных и NCLOB вы всегда имеете дело с количеством байтов, где каждый символ равен 2 байта. Например, если строка текста, содержащая три символа, сохраняется как на сервере NCLOB Oracle, где набор символов составляет 4 байта на символ, и выполняется SetLength операция, вы указываете длину строки в виде 6 байт, хотя она хранится на сервере как 12 байт.

Чтобы выполнить запись в LOB, необходимо получить LOB с помощью предложения FOR UPDATE в инструкции SQL SELECT и запустить локальную транзакцию.

Примечание

Операция записи в доступную только LOB для чтения операция может завершиться успешно, но не обновляет LOB на сервере. Однако в этом случае локальная копия LOB обновляется. Поэтому последующие операции чтения объекта OracleLob могут возвращать результаты операции записи.

Применяется к