我需要进行一些练习,需要从视图访问数据并将其打印出报告。我创建了一个#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)
这是为什么?
亲切的后裔
不要在存储的过程中使用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)
| 归档时间: |
|
| 查看次数: |
1517 次 |
| 最近记录: |