如何通过存储过程更新图像

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个问题。

  1. 您正在使用 image 数据类型。 image2005 中被弃用(那是 16 年前),不应使用。使用 varbinary(MAX).
  2. 您正在注入参数。 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