Как обновить BLOB в SQL SERVER с помощью TSQL
Как обновить поле BLOB только с помощью TSQL (например, из SSMS и не используя такой код, как ADO.Net или Linq)?
1 ответов
есть два способа выбрать BLOB с TSQL:
SELECT * FROM OPENROWSET (BULK 'C:\Test\Test1.pdf', SINGLE_BLOB) a
а также:
SELECT BulkColumn FROM OPENROWSET (BULK 'C:\Test\Test1.pdf', SINGLE_BLOB) a
обратите внимание на имя корреляции после предложения FROM, которое является обязательным.
вторая версия может использоваться для обновления, как в следующем примере:
UPDATE MyTable
SET blobField =
(SELECT BulkColumn FROM OPENROWSET (BULK 'C:\Test\Test1.pdf', SINGLE_BLOB) a)
WHERE (CriteriaField = @criteria)
для частичных обновлений можно использовать набор .Напишите мутатор, как описано в эта статья MSDN, вот синтаксис:
UPDATE MyTable SET BlobField .WRITE (expression, @offset, @length) WHERE (CriteriaField = @criteria)
обратите внимание, что мутатор записи может используется только для ненулевых полей.
фактически это также можно использовать для полного обновления (если столбец не содержит NULL), установив @offset в 0 и @length в NULL (или в фактическую длину), как в следующем примере:
DECLARE @tmp VARBINARY(MAX) --Change to the correct datatype here
SELECT @tmp = BulkColumn FROM OPENROWSET (BULK 'C:\Test\Test1.pdf', SINGLE_BLOB) a
UPDATE MyTable SET BlobField .WRITE (@tmp, 0, NULL) WHERE (CriteriaField = @criteria)