邹大侠,上次的如何使用链接服务器执行远程数据库上的存储过程,并返回值的问题,我的SRV_LNK 是个变量

qsoft 2004-11-22 10:54:44
exec sp_dropserver 'srv_lnk','droplogins'
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','127.0.0.1'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','latitude'
exec sp_serveroption 'srv_lnk','rpc out','true' --这个允许调用链接服务器上的存储过程


declare @id int,
@str varchar(2000)
@deptid varchar(20)
set @deptid='2'
set @str='srv_lnk'+@deptid+'.qsoft'+@deptid+'.dbo.ins ''people'',''mobile'',''13598136858'', @id=@id output'
--exec srv_lnk.qsoft2.dbo.ins 'people','mobile','13598136858',@id=@id output
exec(@str)
print @id
报错:

服务器: 消息 137,级别 15,状态 2,行 1
必须声明变量 '@id'。
...全文
112 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
WangZWang 2004-11-22
  • 打赏
  • 举报
回复
@str='srv_lnk'+@deptid+'.qsoft'+@deptid+'.dbo.ins ''people'',''mobile'',''13598136858'', @id output'
...............

execute sp_executesql @str,N'@id int out',@id out
print @id
qsoft 2004-11-22
  • 打赏
  • 举报
回复
declare @ID INT,
@str varchar(2000),
@deptid varchar(20),
@para Nvarchar(100)
set @para=N'@id int out'
set @deptid='2'
set @str='srv_lnk'+@deptid+'.qsoft'+@deptid+'.dbo.ins ''people'',''mobile'',''13598136858'', @id=@id output'
print @str
execute sp_executesql @str, @para, @ID out
print @id
运行后提示:
srv_lnk2.qsoft2.dbo.ins 'people','mobile','13598136858', @id=@id output
服务器: 消息 214,级别 16,状态 2,过程 sp_executesql,行 10
过程需要参数 '@statement' 为 'ntext/nchar/nvarchar' 类型。

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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