如何使用存储过程从真实表中的临时表中插入值?
当我在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 :(得分:1)
我创建了表Toy并插入了测试记录。以下存储过程适用于我。
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中。
也许您需要提供更多详细信息。
答案 1 :(得分:1)
隐式删除在存储过程范围内创建的临时表,然后存储过程完成。
如果要将数据加载到之后可用的proc中的临时表中,请事先在同一连接上创建临时表,并在proc中使用INSERT
而不是SELECT...INTO
。
或者,您可以使用由会话ID键入的永久表。这是维持购物车状态的更好方法。应用程序,以避免保持持久连接打开。但是,您需要清理被遗弃的会话。
答案 2 :(得分:0)
您在存储过程中创建的临时表只有存储过程的范围。也就是说,当存储过程完成执行时,它会自动删除。
这实际上被认为是SQL Server的功能。您可以在存储过程中使用临时表,而不必担心删除它们。
如果你想要"临时"要持久化的表,要么使用全局临时表,要么使用真实表。