作者:秋日里的一抹阳光_797 | 来源:互联网 | 2023-05-18 00:28
小弟想要通过存储过程将数据库image生成bmp图片保存出来,但在存储过程中一直碰到问题,代码如下ALTERPROCEDURE[dbo].[exam_report]ASdeclare
小弟想要通过存储过程将数据库image生成bmp图片保存出来,但在存储过程中一直碰到问题,代码如下
ALTER PROCEDURE [dbo].[exam_report]
AS
declare
@sjh varchar(50),@imgName varchar(50),@year varchar(50),@loc varchar(50),@month int,@rootloc varchar(50),
@imgid varchar(20),@base varchar(40)
BEGIN
/*层级目录设置,在建立图片存储根目录后,根据年、月进行分层,申请单号作为图片名称*/
set @rootloc='e:\'
set @year=year(getdate())
set @mOnth=month(getdate())
set @imgid='US131113001001'
set @base= 'where imgid='+@imgid /*此处该怎么改动,后续作为textcopy参数*/
set @loc=cast(@rootloc as varchar(10))+cast(@year as varchar(4))+'\'+cast(@month as varchar(2))+'\'+cast('111.bmp' as varchar(20))
--select @loc from uis.dbo.img;
exec sp_textcopy 'localhost','用户名','密码','数据库','image'/*表名*/,'image'/*图像列名*/,@loc,'where imgid=''+@imgid+''','O'
END
这个时候存储过程可以生成可以正常执行,但是图片不能打开,如果
exec sp_textcopy 'localhost','用户名','密码','数据库','image'/*表名*/,'image'/*图像列名*/,@loc,'where imgid=''+@imgid+''','O'改成
exec sp_textcopy 'localhost','用户名','密码','数据库','image'/*表名*/,'image'/*图像列名*/,@loc,'where imgid=‘’US131113001001‘’‘,'O'是可以正常生成并打开图片的
在set中修改set @base= 'where imgid='+@imgid 用@base替换此处的参数,可以生成存储过程,执行时报列名无效
求大神指点应该怎么改动 set @base 这里,可以让声明的变量正常读取
2 个解决方案
搞定了,
这行改成
set @base= 'where imgid='''+@imgid+''' '
用3个单引号搞定了,还是谢谢了