我有一个将图像存储为varbinary
的表,并且我想通过提供图像的路径来创建一个存储过程来插入图像。
但是它不起作用
CREATE PROCEDURE AddImage
@ImagePath VARCHAR(255)
AS
DECLARE @sql VARCHAR(MAX)
SET @sql = 'INSERT INTO Image(RawValue)
SELECT BulkColumn
FROM Openrowset(Bulk '+ @ImagePath +', Single_Blob) AS img';
EXEC(@sql)
GO
[当我尝试执行它时:
EXEC AddImage @ImagePath = 'C:\Users\[myname]\Desktop\wit4.jpg'
我遇到以下错误
Msg 102,第15级,状态1,第39行'mere'附近的语法不正确。
我要去哪里错了?
您需要在字符串周围加一对单引号:
SET @sql = '
INSERT INTO
Image(RawValue)
SELECT BulkColumn
FROM Openrowset(Bulk '''+ @ImagePath +''', Single_Blob) as img
';
我不知道您是否可以将其作为参数传递。如果可以的话,我强烈建议您这样做,而不要浪费查询字符串。
在SQL中,您可以通过将单引号加倍来将其放在字符串中。因此,带有单引号的字符串表示为''''
。两个外部单引号分隔字符串。内部两个单引号定义了单引号字符。