假设我有一个返回查询的标量函数:
CREATE FUNCTION [cimpl].[GetQuery]()
RETURNS NVARCHAR(MAX)
AS
BEGIN
RETURN 'SELECT col1, col2, col3 from dbo.table1 '
END
这是一个示例,但是已经有点像这样了,GetQuery函数可以是具有不同列的任何其他函数,我的目标是将结果从另一个sp放入临时表中。
有了这个结果,我需要将它放在一个临时表中,我的问题是我不想创建一个临时表,因为我不知道期望的列是什么,所以我需要在临时表上创建它。飞行。一件事,我无法修改功能
答案 0 :(得分:0)
SELECT *
INTO #temp
FROM cimpl.GetQuery()
答案 1 :(得分:0)
SQL Server无法轻松处理具有未指定列的表。如果您知道这些列,则可以执行以下操作:
create table #temp ( . . . );
declare @sql nvarchar(max);
select @sql = getquery();
insert into #temp (. . . )
exec(@sql);
但是你没有。
我不建议我要提出的建议,但是您可以将其付诸实践。我怀疑有更好的方法来解决您的实际问题,但是您还没有问过描述此问题的问题。
想法如下:
into
假设您的查询在select
中没有子查询,则可以执行以下操作:
select @sql = getquery();
set @sql = stuff(@sql, charindex('FROM ', @sql) - 5, 0, ' INTO _temp_table ');
exec(@sql);
这不是临时表,因此您需要记住稍后在代码中将其删除。