TSQL のみを使用して (たとえば、ADO.Net や Linq などのコードを使用せずに SSMS から) BLOB フィールドを更新するにはどうすればよいですか?
30990 次
1 に答える
20
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 句の後の相関名に注意してください。これは必須です。
2 番目のバージョンは、次の例のように UPDATE に使用できます。
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 フィールドでのみ使用できることに注意してください。
実際、次の例のように、@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, 0, NULL) WHERE (CriteriaField = @criteria)
于 2012-08-05T23:25:47.463 に答える