2012-08-05 12 views

答えて

12

TSQLでBLOBを選択するために、2つの方法があります。

SELECT * FROM OPENROWSET (BULK 'C:\Test\Test1.pdf', SINGLE_BLOB) a 

と同様に:

SELECT BulkColumn FROM OPENROWSET (BULK 'C:\Test\Test1.pdf', SINGLE_BLOB) a 

は必須であるFROM句の後に相関名を注意してください。

第二のバージョンは、以下の例のように更新のために使用することができる。this MSDN articleで説明したように一方がSET .WRITEのミューテーターを使用することができる部分的な更新のため

UPDATE MyTable 
SET blobField = 
    (SELECT BulkColumn FROM OPENROWSET (BULK 'C:\Test\Test1.pdf', SINGLE_BLOB) a) 
WHERE (CriteriaField = @criteria) 

、ここでの構文は次のとおりです。

UPDATE MyTable SET BlobField .WRITE (expression, @offset, @length) WHERE (CriteriaField = @criteria) 

WRITEミューテータは、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) 
+0

実際にはSELECTの最初のバージョンは、実際には、これはMSDNや他のオンラインリソースを例に使用するものですので、まだ私は、別バージョンとして、それを含め、SELECT *の代わりに2番目のSELECT、より多くの何を使用していません多くの開発者がこれを唯一の方法と考えているようです –

関連する問題