#temporary table Microsoft SQL似乎迷路了

Ari*_*ule 2 sql-server-2008

我需要进行一些练习,需要从视图访问数据并将其打印出报告。我创建了一个#temporary表来存储数据,并使用while循环将其检索并显示在报表中。

问题在于临时表似乎“丢失”了。

--Creating my report
USE PetShopDataBase
CREATE PROCEDURE spPetShopReport 
@customerID INT

SELECT *
INTO #temporary
FROM vwPetshop
WHERE customerID = @customerID
GO

ALTER TABLE #temporary
ADD Printed SMALLINT
GO
Run Code Online (Sandbox Code Playgroud)

然后从这一点出发,该对象被视为无效

UPDATE #temporary
SET Printed = 0
GO
Run Code Online (Sandbox Code Playgroud)

我在运行代码时收到的错误消息是

Msg 4902, Level 16, State 1, Line 2
Cannot find the object "#temporary" because it does not exist or you do not have 
permissions.
Run Code Online (Sandbox Code Playgroud)

这是为什么?

亲切的后裔

HLG*_*GEM 5

不要在存储的过程中使用GO。Go结束批处理,因此结束了存储的proc。

顺便说一句,所有这些代码都可以压缩成一个语句

SELECT * INTO #temporary 
FROM vwPetshop 
WHERE customerID = @customerID   

ALTER TABLE #temporary 
ADD Printed SMALLINT 

UPDATE #temporary 
SET Printed = 0 
Run Code Online (Sandbox Code Playgroud)

试试这个代替:

SELECT *, CAST(0 AS SMALLINT) AS Printed
  INTO #temporary 
FROM vwPetshop 
WHERE customerID = @customerID  
Run Code Online (Sandbox Code Playgroud)