2013-11-21 64 views
2

我需要从存储过程的输出中围绕一个公用表表达式,显然存储过程不能直接从CTE中调用,所以我试图找到解决方法。公用表表达式解决方案的存储过程?

我一直在使用SELECT FROM OPENROWSET,最初看起来像它试图解决的问题 - 但一些我需要调用包含sp_executesql命令的存储过程,因此产生一个错误 -

元数据无法确定因为过程'sp_CustomerAndWorkers'中的语句'EXEC sp_executesql @SQL'包含动态SQL。请考虑使用WITH RESULT SETS子句明确地描述结果集。”

我也看了OPENQUERY,但不允许包含参数。

是否有任何其他我能方法考虑将可能

在此先感谢

+0

我不会知道临时表的列直到运行时,所以它需要自动填充,而不是创建然后填充。如何在不使用OPENROWSET的情况下自动填充它? – user1948635

回答

0

你有没有考虑临时表

例子:??

INSERT INTO #tempTable 
EXEC sp_executesql 
+0

直到运行时,我才知道临时表的列,所以这不是一个选项。无论如何,谢谢 – user1948635

+1

@ user1948635 - 如果直到运行时才会知道列,那么您将继续遇到障碍。使用CTE的查询仍然必须具有一个“形状” - 一组固定的列,具有特定的名称和类型。 –

+0

是的,你可能是对的,希望能够将所有视图/ proc调用包装在一起,这样我就可以应用一个安全模型,但我会寻找一种不同的方法。谢谢 – user1948635