首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

怎么在存储过程中使用循环语句一条一条地对符合条件的结果进行操作

2012-02-05 
如何在存储过程中使用循环语句一条一条地对符合条件的结果进行操作在一个存储过程中对一张表进行更新SELEC

如何在存储过程中使用循环语句一条一条地对符合条件的结果进行操作
在一个存储过程中对一张表进行更新
SELECT   a_name,a_num   FROM   tb_a   WHERE   a_num> 20
要对符合这个查询条件的记录UPDATE,但由于权限问题,只能通过一个已有的SP:sp_tba_update   进行更新,而sp_tba_update接收参数   @a_name  
内容大致为:update   tb_a   set     a_num=a_num-10   WHERE   a_name=@a_name  
我需要在SELECT的时候取出   a_name   然后如果有记录循环调用sp_tba_update
请问这个SP该怎么写?

[解决办法]

declare @a_name varchar(20)
declare cur_tmp cursor for
select a_name from tb_a where a_num> 20
open cur_tmp
fetch next from cur_tmp into @a_name
while @@fetch_status=0
begin
exec sp_tba_update @a_name
fetch next from cur_tmp into @a_name
end
close cur_tmp
deallocate cur_tmp
[解决办法]
数据量不大时,可以这样:
declare @sql varchar(8000)
set @sql= ' '
select @sql=@sql+char(10)+ 'update tb_a set a_num=a_num-10 where a_name= '+quotename(a_name)
from tb_a where a_num> 20

exec(@sql)
[解决办法]
没有update权限可能不行.

热点排行