热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

sqlserver存储过程声明变量做参数报错,列名无效

小弟想要通过存储过程将数据库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 个解决方案

#1


try this,

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+''''' ' 
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,@base,'O'
END

#2


搞定了,
这行改成 
set @base= 'where imgid='''+@imgid+''' ' 
用3个单引号搞定了,还是谢谢了

推荐阅读
  • 关于SQLSERVER的全文目录跟全文索引的区别
    很久没有写随笔了,本来之前想写一篇关于SQLSERVER全文索引的随笔,可惜没有时间,一直拖到现在才有时间写,不好意思让各位久等了~先介绍一下SQLSERVER中的存储类对象,哈哈,先介绍一下概念嘛 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • 浅析Mysql数据回滚错误的解决方法_PHP教程:MYSQL的事务处理主要有两种方法。1、用begin,rollback,commit来实现begin开始一个事务rollback事 ... [详细]
  • 微软平台的软件开发系统中,有着一套自己的约定规则。熟悉.net开发的都会对异常处理不陌生,现阶段的各种编程语言中,都不乏异常处理机制,个中原理也都大同小异。sqlserver在批处 ... [详细]
  • 定制数据层关键字:数据层,访问,元数据,数据访问模型http://www.gaodaima.com/35448.html定制数据层_sqlserver ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • Java连接SqlServer2008数据库(转)
    Java连接SqlServer2008数据库首先下载JDBC:下载地址:http:www.microsoft.comzh-cndownloaddetails.aspx?id21599下载 ... [详细]
  • SQLServer2008全套 数据库简介,分离,收缩,快照
    第三课视频笔记:联机丛书的使用附加和分离数据库---收缩数据库--------数据库快照 ... [详细]
  • 假设我有一张源表customer_account中有一个字段crm_id_content,字段的内容大概为这种模式<r><uid{F7898717-4954-E123 ... [详细]
  • 这篇文章主要讲解了“SQLServer与Access数据库ASP代码有什么区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深 ... [详细]
  • sqldouble222.22222222如何转换成字符串222.22222222%convertcast都是保留4位小数。 ... [详细]
  • SqlServer分区表概述(转载)
    什么是分区表一般情况下,我们建立数据库表时,表数据都存放在一个文件里。但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件 ... [详细]
author-avatar
秋日里的一抹阳光_797
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有