我在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。
答案 0 :(得分: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