在 SQL Server 開發中,經常需要將預存程序執行後的結果集暫存起來,以便後續處理。最常見且高效的方法是搭配 INSERT INTO ... EXEC 語法與暫存表。本文將示範完整的實作步驟與注意事項。
-- 1. 建立暫存表,欄位定義必須與預存程序回傳的結果集完全一致
CREATE TABLE #table_temp (
column1 INT NULL,
column2 VARCHAR(20) NULL
-- 依實際欄位數量與資料類型擴充
);
-- 2. 執行預存程序並將結果直接寫入暫存表
INSERT INTO #table_temp EXEC usp_my_procedure;
-- 3. 在此處對 #table_temp 進行後續操作(查詢、聯結、匯出等)
-- SELECT * FROM #table_temp;
-- 4. 用畢立即刪除暫存表,釋放 tempdb 資源
DROP TABLE #table_temp;
usp_my_procedure 的 SELECT 輸出完全一致,否則會拋出轉換錯誤。# 開頭的區域暫存表僅在目前工作階段可見,工作階段結束會自動清理,但建議显式 DROP 以養成好習慣。若預存程序邏輯允許修改,建議直接改寫為 內嵌資料表值函數 或 預存程序輸出參數,避免暫存表的額外 I/O 開銷。