MSSQL 加入本地 table 与远程链接服务器函数 table
MSSQL join a local table with a remoted linked server function table
我想通过远程 link 服务器功能加入本地 table 和 table 以及 return。
这就是我执行远程 link 服务器功能的方式。
exec linkedServer.DB.dbo.sp_executesql N'SELECT * FROM FunctionA(''parameter'')'
我想像这样加入本地 table:
select * from LocalTable a
left join
(exec linkedServer.DB.dbo.sp_executesql
N'SELECT * FROM FunctionA(''parameter'')') as b
on a.key = b.key
我该怎么做?我需要临时工 table 才能做到这一点吗?
您需要使用 OPENQUERY
,并且为了使连接需要将函数列名称添加到 ;WITH b(col1, col2, ...)
之类的部分
;WITH b(key) AS (
SELECT * FROM OPENQUERY (linkedServer, N'SELECT * FROM DB.dbo.FunctionA(''parameter'')')
)
SELECT * FROM LocalTable a
LEFT JOIN b on a.key = b.key
或者你可以不带
SELECT * FROM LocalTable a
LEFT JOIN (SELECT * FROM OPENQUERY (linkedServer, N'SELECT * FROM DB.dbo.FunctionA(''parameter'')'))b(key)
on a.key = b.key
我想通过远程 link 服务器功能加入本地 table 和 table 以及 return。
这就是我执行远程 link 服务器功能的方式。
exec linkedServer.DB.dbo.sp_executesql N'SELECT * FROM FunctionA(''parameter'')'
我想像这样加入本地 table:
select * from LocalTable a
left join
(exec linkedServer.DB.dbo.sp_executesql
N'SELECT * FROM FunctionA(''parameter'')') as b
on a.key = b.key
我该怎么做?我需要临时工 table 才能做到这一点吗?
您需要使用 OPENQUERY
,并且为了使连接需要将函数列名称添加到 ;WITH b(col1, col2, ...)
;WITH b(key) AS (
SELECT * FROM OPENQUERY (linkedServer, N'SELECT * FROM DB.dbo.FunctionA(''parameter'')')
)
SELECT * FROM LocalTable a
LEFT JOIN b on a.key = b.key
或者你可以不带
SELECT * FROM LocalTable a
LEFT JOIN (SELECT * FROM OPENQUERY (linkedServer, N'SELECT * FROM DB.dbo.FunctionA(''parameter'')'))b(key)
on a.key = b.key