您的位置:首页 > 数据库

SQL : 游标使用实例

2007-12-17 00:15 302 查看
使用游标大体需要经过以下几个步骤:
1.定义游标:declare cursor
2.打开游标:open cursor
3.取得游标中单个的记录,并将记录中的字段赋值给变量。fetch cursor
(每取一个值,游标会自动前移)
4.循环读取游标,并对每一个记录进行处理。fetch与fetch next 是等价的。
5.关闭并释放游标,close cursor, deallocate cursor。

下面给出一个批量更改数据库中记录的例子,这个例子把价目表中所有料品的价格用0到100之间的数值更新,原价目表中所有料品的价格都为0,更新之后所有的价格都是0到100之间的随机数:

use GuruERP

-- 定义游标MyTestCursor:
declare MyTestCursor cursor
for select PGI_ITM_CODE,PGI_ListPrice from TBLPRICELISTGROUPITEM
/*从表中选取两个字段*/
/* 表TBLPRICELISTGROUPITEM中的字段PGI_ITM_CODE是Unique Key */

-- 打开游标MyTestCursor:
open MyTestCursor

declare @PGI_ITM_CODE char(28)
declare @PGI_ListPrice float

--fetch取出游标所指的记录,并将记录结果存入到变量中:
fetch from MyTestCursor into @PGI_ITM_CODE,@PGI_ListPrice

/***************** begin of loop *******************************/
while @@FETCH_STATUS = 0
Begin
update TBLPRICELISTGROUPITEM set PGI_ListPrice=floor(100*rand()) where PGI_ITM_CODE=@PGI_ITM_CODE
fetch next from MyTestCursor into @PGI_ITM_CODE,@PGI_ListPrice
End
/***************** end of loop *******************************/

select @PGI_ITM_CODE as code ,@PGI_ListPrice as price

/***********关闭游标,释放游标:***************/
close MyTestCursor
deallocate MyTestCursor

再重复一下,使用游标批量更改或填充数据库,大体经过declare,open,fetch,loop fetch,close and deallocate 五个步骤。

备注1:
while循环体以BEGIN开始,以END结束,当条件为真时循环继续,为假则结束
备注2:
@@FETCH_STATUS是sql server中的一个变量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: