2017-02-18 108 views
1

如何使用存儲過程將實數表中的值插入到臨時表中?使用存儲過程從實數表插入臨時表中的值

當我執行此代碼在SQL Server它顯示我正確的結果:

SELECT 
    Toy_Image, Toy_Name, Anime_Image, Anime_Name, 
    Toy_Distributor_Image, Toy_Distributor 
INTO #Temp 
FROM Toy 

但是,當我試圖通過存儲過程來執行在SQL Server的代碼,它是不會放棄我任何結果,並且它返回空值:

CREATE PROCEDURE AddToCart 
AS 
BEGIN 
    SELECT 
     Toy_Image, Toy_Name, Anime_Image, Anime_Name, 
     Toy_Distributor_Image, Toy_Distributor 
    INTO #Temp 
    FROM Toy 
END 

我需要幫助解決這個問題

+0

[如何在存儲過程之間共享數據 - Erland Sommarskog](http://www.sommarskog.se/share_data.html)本文解決兩個相關問題: 如何使用一個存儲過程的結果集在另一種情況下,也表達爲:如何在SELECT語句中使用存儲過程的結果集? 如何將參數中的表數據從一個存儲過程傳遞到另一個存儲過程? – SqlZim

回答

1

我創建的表玩具和插入測試記錄。以下存儲過程適用於我。

CREATE PROCEDURE AddToCart 
AS 
BEGIN 
SELECT Toy_Image,Toy_Name,Anime_Image,Anime_Name,Toy_Distributor_Image,Toy_Distributor 
INTO #Temp 
FROM Toy 

SELECT Toy_Image,Toy_Name,Anime_Image,Anime_Name,Toy_Distributor_Image,Toy_Distributor 
FROM #Temp 
END 

當我運行該過程時,我可以看到插入到#Temp中的測試記錄。

也許你需要提供更多細節。

+0

Bingol ...非常感謝,我試過你的代碼,現在它工作 – user2685850

+0

@ user2685850,我很高興它幫助你。 –

0

在存儲過程中創建的臨時表僅具有存儲過程的範圍。也就是說,當存儲過程完成執行時它會自動刪除。

這實際上被認爲是SQL Server的功能。您可以在存儲過程中使用臨時表,而不必擔心刪除它們。

如果您希望「臨時」表保留,請使用全局臨時表或實際表。

1

在存儲過程範圍內創建的臨時表被隱式刪除,然後存儲過程完成。

如果要將數據加載到以後可用的proc中的臨時表中,請在相同連接上預先創建臨時表,並在proc中使用INSERT而不是SELECT...INTO

或者,您可以使用一個永久表,由會話ID鍵入。這是更好的方法來維護「購物車」應用程序的狀態,以避免保持持續連接打開。不過,您需要清理已放棄的會話。

相關問題