declare cursor_name  --游标名称,唯一标识
[insensitive] [scroll] cursor 
for
select_statement --查询语句
[for {read only| update [of column_name [,...n]]}]

/*insensitive
告诉DBMS产生查询结果的临时副本,而不是使用指针指向数据库表中源数据。
指定insensitive时,对底层表任何改动都不会反映到游标数据中。反之,对底层表的改动都会反映到游标数据中。
insensitive游标是只读的,因此不能修改其内容,也不能通过它修改底层表数据。
scroll
表明所有的提取操作,即fetch选项(具体选项在下文提到),若不指定只能进行next提取。
read only
设置游标数据只读,指定read only后,对底层表的改动不会更新其游标数据。
update [of column_name[,...n]]
定义在游标中可被更改的列。如果只指定了update,表示所有列都可以更新。*/
--创建游标
DECLARE AGNTNM CURSOR Local for
	select agntnum from [dbo].[DM_LA_HSAGPF] group by agntnum;
	DECLARE DM_HSAGPF CURSOR Local for

open AGNTNM; --开游标
	FETCH NEXT FROM AGNTNM INTO @agtnum; --获取游标的下一行
	WHILE ( @@fetch_status = 0 )
	begin
		set @MAX_SEQ=@MAX_SEQ + 1;
		insert into @POS_SEQ (POS_SEQ,agntnum,RECORDTYPE) select case when seqnum = null                     
        then @MAX_SEQ else seqnum end,@agtnum,'AGT' 
        from DM_LA_MASTER where agntnum=@agtnum;

		FETCH NEXT FROM AGNTNM INTO @agtnum  --获取游标的下一行
	end
	CLOSE AGNTNM --关闭游标

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐