0

我在 SQL Server 2008 中的存储过程中有以下内容

declare @sql as varchar(max)
set @sql='select col1,col2 from remote server'

我想做的是

insert into mytable(col1,col2)
exec(@sql)
Where not exists
(select * from mytable where col1=?,col2=?)

这是行不通的。有没有办法解决这个问题。我的动态 sql 将保持原样,因为这是使用 openquery 从某个远程服务器获取数据。所以我没有解决方案,只能exec(@sql)在插入时调用。也不知道如何用我应该替换的“?” 在 Where NOT Exists 子句中,因为数据来自动态 SQL。

4

1 回答 1

0

我对此进行了测试。有用。不要忘记授予权限。

declare @sql as nvarchar(max)
set @sql='
insert [linkedserver].[database].[schema].[tablename] (col1, col2)
select @a, @b
where not exists (select 1 from [linkedserver].[database].[schema].[tablename]  
where col1 = @a and col2 = @b)
select * from [linkedserver].[database].[schema].[tablename]  
'

EXEC sp_executesql @sql, N'@a int, @b int', 1,4
于 2013-10-22T12:52:25.533 回答