2012-08-05 11 views

Odpowiedz

12

Istnieją dwa sposoby, aby wybrać BLOB z TSQL:

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

jak również:

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

Uwaga Nazwa korelacja po klauzuli FROM, który jest obowiązkowy.

Druga wersja może być wykorzystane do aktualizacji, jak w poniższym przykładzie:

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

Dla częściowych aktualizacji można wykorzystać modyfikujące SET .write jak opisano w this MSDN article tu przedstawiono składnię:

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

Należy pamiętać, że mutator WRITE może być używany tylko w polach NIEPEŁNOSPRAWNYCH.

W rzeczywistości może to również służyć do wykonania pełnej aktualizacji (jeśli kolumna nie zawiera wartości NULL), ustawiając @offset na 0 i @ length na NULL (lub na rzeczywistą długość), jak w poniższym przykładzie :

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

w rzeczywistości pierwsza wersja SELECT jest niczym więcej niż drugi SELECT tylko używając zamiast SELECT *, Still i włączyła ją jako oddzielną wersję, ponieważ to, co MSDN i innych zasobów internetowych użyć w przykładach wydaje się, że wielu programistów uważa to za jedyny sposób na zrobienie tego –

Powiązane problemy