sql - 如何通过存储过程更新图像
问题描述
我有一个表格,其中有一列图像类型。我正在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;
我收到一个错误:
数据类型 nvarchar 和 image 在 add 运算符中不兼容。
我在哪里做错了?更新图像的正确方法是什么?
解决方案
这里有2个问题。
- 您正在使用
image
数据类型。已于2005 年(即16image
年前)弃用,不应使用。使用.varbinary(MAX)
- 您正在注入参数。参数化你的参数(当我这么说的时候看起来很傻,对吧?),不要注入它们。这就是你错误的原因。
如果我们解决这两个问题,我们最终会得到以下结果:
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
推荐阅读
- javascript - 制作一个 js 小书签,在新窗口中打开网站并使其全屏显示(mac ver)
- html - 如果嵌入另一个标签,Chrome 和 Edge 是否会停止计算容器的预期行为?
- javascript - Node和npm在执行JS文件时抛出错误?
- amazon-web-services - 如何将数组作为环境变量放入 boto3 Lambda 函数
- python - 为本地工作 git 存储库创建一个 requirements.txt,而不用 .py 代码对导入进行 grepping
- javascript - 将类添加到按钮后,我的单击功能不适用于按钮
- java - 为什么我的 Thymeleaf 视图 HTML 文件不显示 Spting 应用程序中的对象列表?
- javascript - ThemeProvider:“主题”道具是必需的。→ React.js
- symfony - EasyAdminBundle 计数和统计
- python - 为什么在将 django_celery_beat 安装到我的虚拟环境并将其放入 INSTALLED_APPS 后出现“没有名为 'django_celery_beat' 的模块”?