2011-08-30 214 views
0
CREATE PROCEDURE uspInsertImage 
@PCImage varbinary(max) 
As 
Begin 

INSERT INTO dbo.PCInfo PCImage) 
VALUES (@PCImage) 

End 

當我收件從數據類型爲varchar隱式轉換爲VARBINARY(最大)是不允許的

EXEC uspInsertPC 'D:\Desktop.jpg' 

顯示錯誤

從數據類型爲varchar到VARBINARY(最大)隱式轉換是不允許 。使用CONVERT函數來運行此查詢。

+1

您是否試圖將實際的文件插入到數據庫中? – Sumo

+1

爲什麼參數聲明爲'varbinary(max)',如果你只是傳遞一個字符串給它? –

回答

2

您正在試圖將字符串保存到一個二進制列,這就是爲什麼你收到此錯誤

你應該告訴SQL服務器通過使用OPENROWSET

你應該做的事情爲使用不同的源提供下面:

INSERT INTO BLOBTest 
    (BLOBName, BLOBData) 
    SELECT 'First test file', 
     BulkColumn FROM OPENROWSET(
      Bulk 'C:\temp\nextup.jpg', SINGLE_BLOB) AS BLOB 

欲瞭解更多信息看看下面:

http://www.databasejournal.com/features/mssql/article.php/3724556/Storing-Images-and-BLOB-files-in-SQL-Server-Part-2.htm

+0

+1但@Ygege如果這是你正在嘗試做的文件路徑需要從服務器的POV而不是你的機器(如果不同) –

相關問題