不允许从数据类型varchar到varbinary(max)的隐式转换

时间:2011-08-30 10:08:14

标签: sql-server stored-procedures

CREATE PROCEDURE uspInsertImage
@PCImage varbinary(max)
As
Begin

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

End

写作时

EXEC uspInsertPC 'D:\Desktop.jpg'

显示错误

  

从数据类型varchar到varbinary(max)的隐式转换不是   允许。使用CONVERT函数运行此查询。

1 个答案:

答案 0 :(得分:2)

您尝试将字符串保存到二进制列中,这就是您收到此错误的原因

您应该通过使用OPENROWSET

告诉SQL Server使用其他源提供程序

你应该做以下事情:

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