游标的一些例子
游标就 是相当于一个可以一条接一条读记录的指针.
如有一个表
num score
1 80
2 70
在嵌入式的SQL中,就可以定义一个游标指向这个表如下
declare cur cursor for select * from tab; //定义游标
open cur; //打开游标,这时它指向第一条记录
while(1)
{
fetch cur; //读取当前记录,并自动指向下一条记录
if(sqlca.sqlcode)break; //记录都读完了,跳出
}
close cur; //关闭游标
free cur; //释放游标资源
declare my_cursor1 cursor for
select nContentId,dtEditTime from content where datepart(month,dtEditTime)='9' and datepart
(day,dtEditTime)='26'
open my_cursor1
declare @date sysname
declare @nID sysname
declare @tempDate datetime
fetch next from my_cursor1 into @nID,@date
while(@@fetch_status = 0)
begin
set @tempDate = dateadd(day,87,@date)
--print @tempDate
update Content set dtEditTime=@tempDate where nContentId = @nID
fetch next from my_cursor1 into @nID,@date
end
close my_cursor1
deallocate my_cursor1用于把9月26日的日期改为:12月22日。
游标好比Sql中的指针。
declare @id nvarchar(20) --定义变量来保存ID号
declare @A float --定义变量来保存值
declare mycursor cursor for select * from tb_c --为所获得的数据集指定游标
open mycursor --打开游标
fetch next from mycursor into @id,@A --开始抓第一条数据
while(@@fetch_status=0) --如果数据集里一直有数据
begin
select tb_b.name,(tb_b.gz + @A) from tb_b where tb_b.id = @id --开始做想做的事(什么更新
呀,删除呀)
fetch next from mycursor into @id,@A --跳到下一条数据
end
close mycursor --关闭游标
deallocate mycursor --删除游标