如何仅使用 TSQL(例如从 SSMS 而不使用 ADO.Net 或 Linq 等任何代码)更新 BLOB 字段?
问问题
30990 次
1 回答
20
使用 TSQL 选择 BLOB 有两种方法:
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 文章中描述的 SET .WRITE mutator,语法如下:
UPDATE MyTable SET BlobField .WRITE (expression, @offset, @length) WHERE (CriteriaField = @criteria)
请注意,WRITE mutator 只能用于 NON-NULL 字段。
事实上,这也可以用于进行完全更新(如果列不包含 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)
于 2012-08-05T23:25:47.463 回答