问题:如何在不事先显式定义表架构的情况下使用存储过程的结果填充临时表?
解决方案: 利用 OPENROWSET
函数。该函数执行远程查询并直接将结果插入到临时表中,从查询的输出动态推断表结构。
这是一个例子:
<code class="language-sql">-- Sample Stored Procedure CREATE PROC getBusinessLineHistory AS BEGIN SELECT * FROM sys.databases END GO -- Enable Ad Hoc Distributed Queries (required for OPENROWSET) sp_configure 'Show Advanced Options', 1 GO RECONFIGURE GO sp_configure 'Ad Hoc Distributed Queries', 1 GO RECONFIGURE GO -- Insert results into temporary table using OPENROWSET SELECT * INTO #MyTempTable FROM OPENROWSET('SQLNCLI', 'Server=(local)\SQL2008;Trusted_Connection=yes;', 'EXEC getBusinessLineHistory') -- Verify the data SELECT * FROM #MyTempTable</code>
此代码首先定义了一个示例存储过程 (getBusinessLineHistory
)。 至关重要的是,它随后使用 sp_configure
启用“临时分布式查询”。这是使用OPENROWSET
的先决条件。
OPENROWSET
远程执行存储过程,返回的数据会自动插入到#MyTempTable
中。临时表的结构是根据存储过程返回的数据类型动态创建的。 最后,SELECT
语句确认数据已成功插入。 这种方法避免了手动定义临时表架构的需要。
以上是如何在不定义其结构的情况下将存储过程插入临时表中?的详细内容。更多信息请关注PHP中文网其他相关文章!