存储过程不支持INSERT/EXECUTE INTO的功能原因?

Sql*_*yan 3 t-sql sql-server stored-procedures temp-tables

在SQL Server中,无法从存储过程的结果中动态创建临时表,ala:

CREATE TABLE #temptable AS
EXEC spMyStoredProc
Run Code Online (Sandbox Code Playgroud)

要么

EXEC spMyStoredProc INTO #temptable
Run Code Online (Sandbox Code Playgroud)

或类似的东西.相反,您必须事先知道SP布局,并且必须执行以下操作:

CREATE TABLE #temptable (col1 INT, col2 VARCHAR(255))

INSERT INTO #temptable
EXEC spMyStoredProc
Run Code Online (Sandbox Code Playgroud)

是否存在功能性原因?可能是SQL Server的限制?或者它只是尚未添加到SQL规范中的东西,我可以抱有希望有一天它们会支持它吗?

pol*_*lot 10

存储过程可以返回许多结果集,也可以不返回任何结果集,并且它可以完全根据存储过程的执行而变化.

在编译时,它的元信息不会将其描述为具有任何特定的可预期结果集输出.

我希望考虑到这些限制,他们选择不实现这一点,因为缺乏对存储过程可能返回的强类型.