我想将存储过程的结果放入临时表中。似乎必须事先定义临时表,并且INSERT INTO将不起作用。
任何人都知道如何从select语句中获取记录集的模式吗?
sp_help只获取参数信息。
答案 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) ;