如何从tsql执行结果集?

时间:2014-12-17 14:29:55

标签: sql-server tsql execute linked-server

我尝试远程查询此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时会出现错误'无效对象名'

1 个答案:

答案 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