Реферат: Работа с объектами большого объема в MS SQL и ADO

Следующие два вызова аналогичны:

WRITETEXT table.column text_ptr inserted_data

UPDATETEXT table.column text_ptr 0 NULL inserted_data

Давайте рассмотрим пример. Предположим, я ошибся, набирая имя своей жены, и мне его сейчас необходимо заменить:

declare @p binary(16)

declare @l int,@idx int

begin tran

select @p = textptr(txt),

@idx = patindex('%Rosa%',txt)-1,

@l = datalength(txt)-(patindex('%Rosa%',txt)-1)

from blob_test (updlock)

where id = 1

if textvalid(' blob_test.txt',@p) = 1

updatetext blob_test.txt @p @idx 4 '[Correct name]'

commit

Пожалуй, это все. Осталось еще одна тонкость.

Данные в строке

Читая Books Online, я наткнулся на такое предложение:

After you have turned on the text in row option, you cannot use the READTEXT, UPDATETEXT or WRITETEXT statements, to read or modify parts of any text, ntext, or image value stored in the table.

Вот это да! Т.е. я не могу пользоваться функциями, приведенными выше, если таблица находится в режиме «данные в строке»? Это неправда. Хотя вот такой пример может убедить кого угодно:

declare @p binary(16)

declare @idx int,@l int

select @p = textptr(ntxt),

@idx = patindex('%is%',ntxt)-1,

@l = datalength(ntxt)/2-(patindex('%is%',ntxt)-1)

from blob_test (repeatableread)

where id = 1

if textvalid('blob_test.ntxt',@p) = 1

readtext blob_test.ntxt @p 0 14

К-во Просмотров: 667
Бесплатно скачать Реферат: Работа с объектами большого объема в MS SQL и ADO