解决方法
使用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,如以下示例所示:
UPDATE MyTable SET blobField = (SELECT BulkColumn FROM OPENROWSET (BULK 'C:\Test\Test1.pdf',SINGLE_BLOB) a) WHERE (CriteriaField = @criteria)
对于部分更新,可以使用如.000000中所述的SET .WRITE mutator,这里是语法:
UPDATE MyTable SET BlobField .WRITE (expression,@offset,@length) WHERE (CriteriaField = @criteria)
请注意,WRITE mutator只能用于NON-NULL字段.
实际上,通过将@offset设置为0并将@length设置为NULL(或实际长度),这也可用于执行完全更新(如果列不包含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,NULL) WHERE (CriteriaField = @criteria)