2017-02-18 53 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键入。这是更好的方法来维护“购物车”应用程序的状态,以避免保持持续连接打开。不过,您需要清理已放弃的会话。

相关问题