我正在编写一个存储过程来循环遍历表,将值插入临时表&然后最终我将循环通过临时表&添加值。
到目前为止,我已经编写了第一个循环,它将值插入临时表。
我收到此错误...
There is already an object named '#testtable' in the database.
这是我的代码:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER OFF
GO
DECLARE @TestID int,
@TestValue int,
@sum int
CREATE TABLE #testtable (TestID int,
TestValue int)
DECLARE loop CURSOR FOR
SELECT TestValue
FROM tblTest
WHERE TestID > 1
OPEN loop
FETCH NEXT FROM loop INTO @TestID,@TestValue
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO #temp (TestID, TestValue) values (@TestID, @TestValue)
FETCH NEXT FROM loop INTO @TestID,@TestValue
END
CLOSE loop
DEALLOCATE loop
SELECT @TestID FROM #testtable WHERE @TestID > 1
答案 0 :(得分:1)
我怀疑这是发生的事情:
要在脚本中避免此问题,请在脚本底部添加:
DROP TABLE #testtable
答案 1 :(得分:0)
而不是使用游标来填充临时表,如何只创建临时表并将其填充到一起去?
if OBJECT_ID('tempdb..#testtable') is not null drop table #testtable
SELECT TESTID, TestValue
INTO #testtable
FROM tblTest WHERE TestID > 1
答案 2 :(得分:0)
如果你需要的只是总和那么这应该是
SELECT sum(TestValue)
FROM tblTest
WHERE TestID > 1