2010-07-14 28 views
4

像我申报表...我怎么能放下,我在我的SP

declare @tempTable TABLE 
    (Id bigint identity(1,1), 
    bKey int, 
    DateT DateTime, 
    Addres nvarchar(max), 
    unit bigint) 

已经声明了一个表,我想砸......但是即时通讯stucked堂妹DROP TABLE n截断不加工。

ani ideaaa ... ???

+1

“不工作”是什么意思?他们是否因错误消息而失败?什么是错误? – Jason 2010-07-14 12:13:50

+0

它提供的错误,“必须声明标量变量@tempTable” – Tami 2010-07-16 06:31:16

回答

6

您不必删除表变量(即那些以@开始)

+1

因为我想重新调整它..我我在while循环中声明此表...每当它被声明其ID列值不会启动从0,种子也给出了同样的错误,必须“声明标量变量@temTable” – Tami 2010-07-16 06:32:07

2

你为什么要删除表变量?表变量的作用域仅在声明的存储过程...

检查这篇文章... Table Variables In T-SQL

UPDATE

使用#temptable通过@Adam ... 的建议然后截断TABLE #temptable ,而不是DROP TABLE;这种方式不需要在循环内重新创建它。

+0

因为我想种它..我在while循环中声明这个表...n每次声明它的ID列值不是从0开始时,种子也给出相同的错误,必须“声明标量变量@temTable” – Tami 2010-07-16 07:03:46

+0

你不能重新编制表变量。如果您想要使用#temptable ...,请按照@Adam的建议操作。 然后使用TRUNCATE TABLE @temptable,而不是DROP – CoderHawk 2010-07-16 08:42:18

2

您已将表格声明为表格变量。它只会在存储过程期间存在。当程序结束时,它会自动“放弃”(不再存在更准确,因为它从来没有像其他表格那样存在)。你不能手动删除它们。

2

您创建了一个保存在变量中的临时表。只有存储过程正在执行时它才存在。 SP完成后,临时表将不复存在,并自动删除。

编辑:

你可以尝试通过运行存储过程测试,然后尝试在运行一个选择查询您的@tempTable

+0

亚我同意..但我怎么能重新声明它在一个循环,以便其ID号柱将从零开始。我的意思是我怎么可以种它.... dbcc comaamd种子也无法改变@tempTable(表变量) – Tami 2010-07-16 06:57:47

0

在你的SP,这会从您的申报表中删除所有的值

DELETE FROM @tempTable 
+0

是的,它会按照你说的做,但我的问题是重新表格。 – Tami 2013-12-13 21:08:14

+0

我有一个类似的问题,这导致我这个问题;我无法在同一个SP中重新放置表格。但是当我使用DELETE FROM @tempTable时,我得到了一个空表,它允许我用新的值重新表格。 – Ernest 2014-01-09 22:21:32