這是一個Teradata v14特定問題。將選擇語句的結果存儲在存儲過程中
如何在存儲過程中存儲查詢結果以供進一步處理。
選項我已經看過:
- 揮發性臨時表 - 但是,這需要先於存儲 過程
- 派生表創建 - 但只適用於一個查詢 的時間結果
結果需要在存儲過程的持續時間內可用。
還有其他的選擇嗎?
更新2014年6月16日: 根據答案和評論似乎揮發性表是最好的答案。然而,然後我們嘗試使用易失性表存儲過程抱怨該表不存在。有沒有解決的辦法?
這是一個Teradata v14特定問題。將選擇語句的結果存儲在存儲過程中
如何在存儲過程中存儲查詢結果以供進一步處理。
選項我已經看過:
結果需要在存儲過程的持續時間內可用。
還有其他的選擇嗎?
更新2014年6月16日: 根據答案和評論似乎揮發性表是最好的答案。然而,然後我們嘗試使用易失性表存儲過程抱怨該表不存在。有沒有解決的辦法?
您是否考慮過全球臨時表?
表定義存儲在DBC數據字典中,並在被SQL引用時爲會話持續時間實例化。像易失性表一樣,全局臨時表也是會話特定的。與易失性表不同,全局臨時表依賴於用戶的臨時空間而不是假脫機空間。
你的意思是你想存儲數據以便在你的proc中進一步處理嗎?這是什麼意思,在程序之前需要創建易失性表格?您只需在過程中聲明該表。 – Andrew
@Andrew:是的,我的意思是我想在存儲過程中進行處理。存儲過程可以同時執行多次。在存儲過程中聲明易失性表會拋出一個錯誤,指出該表不存在。 – L4zl0w
不,揮發性表不是最好的答案。 Rob建議使用全局臨時表。在你創建你的SP之前創建它**(你也可以在你的SP中創建它,並捕獲「表已存在」的錯誤,但它不值得在源代碼中的開銷),在你的SP中你只需使用它像任何其他表一樣,每個會話都會有它自己的物化實例。 – dnoeth