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 могут возвращать результаты операции записи.