2012-08-05 14 views

risposta

12

Ci sono due modi per selezionare un BLOB con TSQL:

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

nonché:

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

annotare il nome di correlazione dopo la clausola FROM, che è obbligatorio.

La seconda versione può essere utilizzato per un UPDATE come il seguente esempio:

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

Per aggiornamenti parziali si può usare il modificatore SET .WRITE come descritto in this MSDN article, ecco la sintassi:

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

Si noti che il mutatore WRITE può essere utilizzato solo su campi NON NULL.

Infatti, questo può essere utilizzato anche per eseguire un aggiornamento completo (se la colonna non contiene NULL), impostando @offset su 0 e @length su NULL (o sulla lunghezza effettiva), come nell'esempio seguente :

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

in effetti, la prima versione di SELECT è davvero niente di più poi il secondo selezionare solo utilizzando invece SELECT *, Still ho inserito come una versione separata dal momento che questo è ciò che il MSDN e altre risorse online utilizzano negli esempi e sembra che molti sviluppatori pensino che sia l'unico modo per farlo –

Problemi correlati