表变量能实现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本来就没什么实际意义,只是表示一个顺序而已