日期:2014-05-18  浏览次数:20560 次

表变量能实现truncate功能吗?
我在存储过程中,由于有很多次循环,因此不用临时表,而是用了表变量

declare   @tmp   table
(
    iid   int   identity(1,1),
    name   varchar(20),
    age   int
)

我需要iid每次循环往@tmp插值的时候都能自动从1开始,
但是   truncate   table   @tmp   不能用,     也不能   drop   table

这样   iid   越长越大,无法满足业务需要。

有没有什么方法可以解决??


实际业务中,我需要取   @tmp   表中的   第   N   行记录。

谢谢

------解决方案--------------------
改用临时表吧。
------解决方案--------------------
表变量不支持Truncate table,也不能动态添加或删除列。
------解决方案--------------------
由于有很多次循环,因此不用临时表
--------------------------------

如果处理的数据量很大,建议使用临时表。

如果处理的数据量比较小,使用表变量固然可以提高速度,但与使用临时表的速度差别很小,完全可以通过硬件性能弥补,可以忽略不计。
------解决方案--------------------
如果这样的华,iid不要做为identity(1,1)的,改为人为的处理增长好了
------解决方案--------------------
CathySun118(斯年)
对的
------解决方案--------------------
临时表是可以用
truncate table #

表变量不行
------解决方案--------------------
自己控制id吧,id本来就没什么实际意义,只是表示一个顺序而已