获取proc的select输出的模式

时间:2009-04-01 16:47:51

标签: sql-server sql-server-2005 tsql

我想将存储过程的结果放入临时表中。似乎必须事先定义临时表,并且INSERT INTO将不起作用。

任何人都知道如何从select语句中获取记录集的模式吗?

sp_help只获取参数信息。

4 个答案:

答案 0 :(得分:4)

您应该能够在不使用OPENQUERY定义架构的情况下插入临时表:

SELECT * INTO #TempTable
FROM OPENQUERY(ServerName, ‘EXEC DataBaseName.dbo.StoredProcedureName paramvalues1, paramvalues1′)

其中ServerName是Sql Server实例的名称。有关详细信息,请参阅this article

答案 1 :(得分:0)

您可以在查询窗口中执行包括INSERT INTO在内的逻辑内容吗?这应该生成一个可以用作模型的临时表。

最糟糕的情况是,您手动构建架构一次,如果您是编写SP的人,那么这不应该是繁重的。

为了将来的文档,我喜欢在SP中手工制作DDL。它有助于在调试时明确掌握架构。

答案 2 :(得分:0)

如果可以,请将存储过程更改为用户定义的函数。

http://www.scottstonehouse.ca/blog/2007/03/stored-procedures-are-not-parameterized.html

答案 3 :(得分:0)

有时候,您只需要了解架构而无需创建表。该命令输出结果集的结构,而无需实际执行存储过程。

摘自2015年4月16日rachmann,来自Microsoft SQL Server论坛文章How to get schema of resultset returned by a stored procedure without using OPENQUERY?

SELECT * FROM sys.dm_exec_describe_first_result_set ('owner.sprocName', NULL, 0) ;