如何通过存储过程更新图像
How to Update image through stored procedure
我有一个 table,其中有一列图像类型。我正在动态获取架构名称(此处为 cid
)。我正在尝试更新图像列如下
SET @SQL1 = 'UPDATE ' + QUOTENAME(@cid) + '.[QueenBase].[queen_user] ' +
'SET [resizedimage] = ' + CAST(@resizedimage AS image) +
' WHERE userid = ''' + CAST(@userid AS VARCHAR(30)) + '''';
EXEC sys.sp_executesql @SQL1;
我遇到一个错误:
The data types nvarchar and image are incompatible in the add operator.
我哪里弄错了?更新图像的正确方法是什么?
这里有2个问题。
- 您正在使用
image
数据类型。 image
在 2005 中被弃用(那是 16 年前),不应使用。使用 varbinary(MAX)
.
- 您正在注入参数。 Parametrise 你的参数(我这么说似乎很傻,对吧?),不要注入它们。这一点是你错误的原因。
如果我们解决了这两个问题,我们将得到以下结果:
SET @SQL1 = N'UPDATE '+QUOTENAME(@cid) + N'.[QueenBase].[queen_user] SET [resizedimage]=@resizedimage WHERE userid=@userid;';
EXEC sys.sp_executesql @SQL1, N'@resizedimage varbinary(MAX), @userid int', @resizedimage, @userid; --Data type of @userid guessed. Correct as needed
我有一个 table,其中有一列图像类型。我正在动态获取架构名称(此处为 cid
)。我正在尝试更新图像列如下
SET @SQL1 = 'UPDATE ' + QUOTENAME(@cid) + '.[QueenBase].[queen_user] ' +
'SET [resizedimage] = ' + CAST(@resizedimage AS image) +
' WHERE userid = ''' + CAST(@userid AS VARCHAR(30)) + '''';
EXEC sys.sp_executesql @SQL1;
我遇到一个错误:
The data types nvarchar and image are incompatible in the add operator.
我哪里弄错了?更新图像的正确方法是什么?
这里有2个问题。
- 您正在使用
image
数据类型。image
在 2005 中被弃用(那是 16 年前),不应使用。使用varbinary(MAX)
. - 您正在注入参数。 Parametrise 你的参数(我这么说似乎很傻,对吧?),不要注入它们。这一点是你错误的原因。
如果我们解决了这两个问题,我们将得到以下结果:
SET @SQL1 = N'UPDATE '+QUOTENAME(@cid) + N'.[QueenBase].[queen_user] SET [resizedimage]=@resizedimage WHERE userid=@userid;';
EXEC sys.sp_executesql @SQL1, N'@resizedimage varbinary(MAX), @userid int', @resizedimage, @userid; --Data type of @userid guessed. Correct as needed