在存储过程中,为了在一个结果集的记录中进行循环,除了用游标还能用其他的方式吗?
1个回答
展开全部
临时表 或表变量都可以 例如:sqlserver数据库,你的结果集为 T_Table
if object_id('tempdb..#tmp') > 0
drop table #tmp
declare @ID int
select identity(int,1,1) as ID,* from T_Table
select @ID = 1
while Exists(select * from #tmp)
begin
select @变量 = 字段 from #tmp where id = @id
select @ID = @ID + 1
end
将临时表 换成表变量也可以
不用游标可以避免 游标的释放问题和游标重名的问题。
如果只是为了速度 就无所谓了,游标的性能没有大家说的那么差,关键就看你怎么写就是了
没有环境,自己调整一下吧
if object_id('tempdb..#tmp') > 0
drop table #tmp
declare @ID int
select identity(int,1,1) as ID,* from T_Table
select @ID = 1
while Exists(select * from #tmp)
begin
select @变量 = 字段 from #tmp where id = @id
select @ID = @ID + 1
end
将临时表 换成表变量也可以
不用游标可以避免 游标的释放问题和游标重名的问题。
如果只是为了速度 就无所谓了,游标的性能没有大家说的那么差,关键就看你怎么写就是了
没有环境,自己调整一下吧
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询