报错:必须声明变量

ioioui 2010-09-26 09:46:39
--2.将文件保存到数据库中
declare @srv varchar(255),@db sysname,@tb sysname,@col sysname
select @srv=@@servername --服务器名
,@db=db_name() --数据库名
,@tb='tb' --表名
,@col='img' --列名
sp_textcopy @srv,'sa','sa的密码',@db,@tb,@col,'c:\test.jpg','where id=1','I' --保存到id=1的记录中,注意条件是:id=1
sp_textcopy @srv,'sa','sa的密码',@db,@tb,@col,'c:\test.doc','where id=2','I' --保存到id=2的记录中,注意条件是:id=2



其中“select @srv=@@servername --服务器名”我的服务器名字是 ioioui 我直接将servername 替换成ioioui
程序会报错

“消息 137,级别 15,状态 2,第 2 行
必须声明变量 '@@ioioui'。”

请问这个应该怎么修改

...全文
97 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
王向飞 2010-09-26
  • 打赏
  • 举报
回复
参考这个http://zhidao.baidu.com/question/32187127.html
存储过程调用要用 exec

exec  sp_textcopy @srv,'sa','sa的密码',@db,@tb,@col,'c:\test.jpg','where id=1','I' --保存到id=1的记录中,注意条件是:id=1

我觉得需要你改的就是 ,@tb='tb' --表名
,@col='img' --列名

和你的路径了
'c:\test.jpg'
喜-喜 2010-09-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ioioui 的回复:]
declare @srv varchar(200),@db sysname,@tb sysname,@col sysname
select @srv=@@servername --服务器名
,@db=db_name() --数据库名
,@tb='pictable1' --表名
,@col='id' --列名
exec sp_textcopy1 @srv,'sa','1……
[/Quote]

你上面的代码指定的参数有 9 个!那么你定义 sp_textcopy1 的时候有几个参数?
ioioui 2010-09-26
  • 打赏
  • 举报
回复
declare @srv varchar(200),@db sysname,@tb sysname,@col sysname
select @srv=@@servername --服务器名
,@db=db_name() --数据库名
,@tb='pictable1' --表名
,@col='id' --列名
exec sp_textcopy1 @srv,'sa','123',@db,@tb,@col,'e:\test.jpg','where id=1','I' --保存到id=1的记录中,注意条件是:id=1

报错

消息 8144,级别 16,状态 2,过程 sp_textcopy1,第 0 行
为过程或函数 sp_textcopy1 指定的参数太多。

这个sp_textcopy1是我创建的一个存储过程
喜-喜 2010-09-26
  • 打赏
  • 举报
回复
declare @srv varchar(255),@db sysname,@tb sysname,@col sysname
select @srv=@@servername --服务器名
,@db=db_name() --数据库名
,@tb='pictable1' --表名
,@col='id' --列名
exec sp_textcopy1 @srv,'sa','123',@db,@tb,@col,'e:\test.jpg','where id=1','I' --加exec
ioioui 2010-09-26
  • 打赏
  • 举报
回复
那需要修改的是哪几个变量

我是这样修改的 你能帮我看下吗

declare @srv varchar(255),@db sysname,@tb sysname,@col sysname
select @srv=@@servername --服务器名
,@db=db_name() --数据库名
,@tb='pictable1' --表名
,@col='id' --列名
sp_textcopy1 @srv,'sa','123',@db,@tb,@col,'e:\test.jpg','where id=1','I' --保存到id=1的记录中,注意条件是:id=1

报错

消息 170,级别 15,状态 1,第 6 行
第 6 行: 'sp_textcopy1' 附近有语法错误。
王向飞 2010-09-26
  • 打赏
  • 举报
回复
  declare @srv varchar(200),@db sysname,@tb sysname,@col sysname
select @srv=@@servername --服务器名
,@db=db_name() --数据库名
,@tb='tb' --表名
,@col='img' --列名

select @srv,@db,@tb,@col

代码没错
billpu 2010-09-26
  • 打赏
  • 举报
回复
@@servername是全局变量 不能变的,select @srv='ioioui'
王向飞 2010-09-26
  • 打赏
  • 举报
回复
SELECT @@SERVERNAME AS 'Server Name'


下面是一个结果集示例。

复制代码
Server Name
---------------------------------
ACCTG


王向飞 2010-09-26
  • 打赏
  • 举报
回复
这个不用改,就用@@servername

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧