sqlserver存储过程跨库insert操作并带有参数

haileo 2011-03-28 10:54:23
sqlserver存储过程跨库insert操作并带有参数,但是总是报参数未声明
CREATE procedure [dbo].[up_Log]
(
@tid varchar(16),
@vid varchar(20),
)as [code=SQL]


-- 创建远程数据库连接
exec
sp_addlinkedserver

go
exec
sp_addlinkedsrvlogin
go

INSERT INTO [serverjsj].[DBName].dbo.T_UPDATE_LOG (F_TERMINAL_ID,F_VEHICLE_ID)
VALUES(@tid,@vid)

--删除远程数据库连接
--exec sp_dropserver

Go[/code]

错误提示为:@tid、@vid未定义
...全文
366 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
haileo 2011-03-28
  • 打赏
  • 举报
回复
又执行了下了,又没问题了,诡异,谢谢大家了^_^
gogodiy 2011-03-28
  • 打赏
  • 举报
回复
能不能先做个链接服务器,然后通过连接服务器操作?
haileo 2011-03-28
  • 打赏
  • 举报
回复
如何在查询语句中执行如下语句,没问题
-- 创建远程数据库连接
exec
sp_addlinkedserver @server='jszx',
@provider='SQLOLEDB',
@srvproduct ='New',
@datasrc ='IP'
go
exec
sp_addlinkedsrvlogin @rmtsrvname = 'jszx',
@useself = 'false',
@locallogin = null,
@rmtuser ='sa',
@rmtpassword ='password'
go
--往T_UPDATE_LOG表中新增一条记录
NSERT INTO [jszx].[New].dbo.T_UPDATE_LOG (F_TERMINAL_ID,F_VEHICLE_ID)
VALUES('asdasd','1231')
haileo 2011-03-28
  • 打赏
  • 举报
回复
完整代码
USE [New]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE procedure [dbo].[up_AddUpdateLog]
(
@tid varchar(16),
@vid varchar(20)

)as

-- 创建远程数据库连接
exec
sp_addlinkedserver @server='jszx',
@provider='SQLOLEDB',
@srvproduct ='New',
@datasrc ='IP'
go
exec
sp_addlinkedsrvlogin @rmtsrvname = 'jszx',
@useself = 'false',
@locallogin = null,
@rmtuser ='sa',
@rmtpassword ='password'
go
--往T_UPDATE_LOG表中新增一条记录
INSERT INTO [jszx].[New].dbo.T_UPDATE_LOG (F_TERMINAL_ID,F_VEHICLE_ID)
VALUES(@tid,@vid)

--删除远程数据库连接
--exec sp_dropserver 'jszx','droplogins'


Go
rucypli 2011-03-28
  • 打赏
  • 举报
回复
肯定可以带参数的
贴出你的完整sp
haileo 2011-03-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 acherat 的回复:]

还出问题试试这样!
CREATE procedure [dbo].[up_Log]
(
@tid varchar(16),
@vid varchar(20)
)
as
begin
declare @t_tid varchar(16)
declare @v_vid varchar(20)
set @t_tid = @tid
set @v_vid = @vid
exec ..……
[/Quote]
这个方法我试过了,不行
haileo 2011-03-28
  • 打赏
  • 举报
回复
不是符号的问题,符号是我发帖的时候搞错的,我在网上查了好多关于跨库操作,如查询等,但都没有带参数进行查询
AcHerat 2011-03-28
  • 打赏
  • 举报
回复
还出问题试试这样!
CREATE procedure [dbo].[up_Log]
(
@tid varchar(16),
@vid varchar(20)
)
as
begin
declare @t_tid varchar(16)
declare @v_vid varchar(20)
set @t_tid = @tid
set @v_vid = @vid
exec ...


..

insert into .. values(@t_tid,@v_vid)


end
go
andysun88 2011-03-28
  • 打赏
  • 举报
回复
CREATE procedure [dbo].[up_Log]
(
@tid varchar(16),
@vid varchar(20),
)as
不能编译吧,多了个逗号,但不一定是这个的原因。
AcHerat 2011-03-28
  • 打赏
  • 举报
回复
CREATE procedure [dbo].[up_Log]
(
@tid varchar(16),
@vid varchar(20),
)as

符号!

dawugui 2011-03-28
  • 打赏
  • 举报
回复
CREATE procedure [dbo].[up_Log]
(
@tid varchar(16),
@vid varchar(20)
)as

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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