sql-server - 存储过程并使用参数从链接的存储过程填充临时表

标签 sql-server stored-procedures linked-server

我有一个存储过程 (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/

相关文章:

java - "prepared-statement"是存储过程吗?

mysql while循环中断等效

mysql - INSERT...ON DUPLICATE KEY UPDATE 比 DELETE/INSERT 所有记录更快

sql - super 简单的查询需要 39 秒才能执行

sql-server - 如果您不向数据库(例如 SQL Server)提交事务会怎样?

mySQL:存储过程比查询更安全?

mysql - 通过 openquery 在 SQL Server 中查询 MySql - "0000-00-00"行未显示

sql-server - 如何从 SQL Server(链接服务器)访问 Postgres 数据

sql - 生产BoM爆破演练幻影BoM

sql - 临时表已存在