我有一个存储过程 (SP),我在其中传递一个值。在此 SP 中,我尝试根据链接/远程服务器上的另一个 SP 的结果创建/填充临时表。也就是说,我正在尝试在 SP 中执行 SP 并填充我的查询将使用的临时表。
我尝试使用以下语法,但它不起作用,因为 openquery 似乎不喜欢“+”或 @param1 参数。
select * into #tempTable
from openquery([the Linked server],'exec thelinkedSPname ' + @param1)
如果我在其中硬编码了参数值,它就可以正常工作。
select * into #tempTable
from openquery([the Linked server],'exec thelinkedSPname 2011')
我还手动构建了临时表并尝试执行链接的 SP,但这也不起作用。
create table #tempTable(
.
.
.
)
insert into #tempTable
(
.
.
.
)
Exec [the Linked server],'exec thelinkedSPname ' + @param1
有关如何从通过链接服务器执行 SP 的 SP 内填充临时表的任何建议。注意上面的SQL只是伪代码
最佳答案
我认为您需要动态 SQL,因为您无法将参数传递给 OPENQUERY
像这样(但首先访问这个 link )所以你会得到这样的东西:
create table #tempTable(
.
)
DECLARE @param1 VARCHAR(10), @Query VARCHAR(8000)
SET @param1 = '2011'
SET @Query = '
SELECT *
FROM OPENQUERY([Linked Server],''exec thelinkedSPname '' + @param1+''')'
INSERT INTO #tempTable
EXEC(@Query)
关于sql-server - 存储过程并使用参数从链接的存储过程填充临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7126382/