我尝试远程查询此SO answer中提供的表值函数。
但我偶然发现如何让返回的结果集在sql代码中与它们一起使用...
SQL Server不支持远程调用UDF,openquery
不能有参数 - 只有静态字符串。
declare @query nvarchar(max) = 'select * into #workingDays from openquery(LNKDSRV, ''select * from DB.dbo.fxn_getWorkingDays('''''
+ cast(@date1 as nvarchar(max))
+ ''''','''''
+ cast(@date2 as nvarchar(max))
+ ''''')'')';
exec sys.sp_executesql @query;
稍后查询#workinDays时会出现错误'无效对象名'。
答案 0 :(得分:1)
在sp_executesql在会话中可用之前,您必须定义表:
Create table #tbl
declare @query nvarchar(max) = 'insert into #tbl select * from....
exec sys.sp_executesql @query
select * from #tbl
另一种选择是使用全局临时表##tbl