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