將存儲過程結果插入 SQL 中的臨時表
SQL 的 INTO
子句可以輕鬆地將表數據插入到臨時表中。 但是,使用 EXEC
直接插入存儲過程的結果通常會導致語法錯誤。 解決方案是什麼?使用OPENROWSET
功能。
以下是實現此目標的方法:
<code class="language-sql">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 SELECT * INTO #MyTempTable FROM OPENROWSET('SQLNCLI', 'Server=(local)\SQL2008;Trusted_Connection=yes;', 'EXEC getBusinessLineHistory'); SELECT * FROM #MyTempTable;</code>
OPENROWSET
提供了一種解決方法,無需顯式定義臨時表的列即可訪問存儲過程數據。這簡化了存儲過程輸出以及隨後的處理或分析。 請注意,啟用“Ad Hoc Distributed Queries”是此方法正常運行的先決條件。
以上是如何在SQL中將預存程序結果插入到臨時表中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!