您的位置:首页 > 数据库

Sql(事物+游标)使用方法

2010-04-28 10:08 246 查看
--当两个或两以上的操作要么都执行,要么都不执行时要用事务。
1. Sql写法(事物+游标)
--开始事务
BEGIN TRAN
--不显示计数信息
SET NOCOUNT ON
DECLARE @ProjNo varchar(50),@CusNo varchar(50)
--声明游标
DECLARE CRMPSContact_cursor CURSOR FOR 
SELECT ProjNo
from CRMPSContact
WHERE ProjNo>0
--打开游标
OPEN CRMPSContact_cursor
--取第一行的值给专案变量: @ProjNo
FETCH NEXT from CRMPSContact_cursor 
INTO @ProjNo
--取得客户号
select @CusNo = CusNo 
from CRMPSProjectM 
where ProjNo = @ProjNo
--得到CRMPSContact中某专案号对应的客户号
update CRMPSContact 
set CusNo = @CusNo
where ProjNo = @ProjNo
--执行错误回滚
if @@error!=0
  begin
    rollback tran
    return
  end
--移动游标,其它所有行更新操作(当到结尾时退出)
WHILE @@FETCH_STATUS = 0
BEGIN      
   --游标移到下一行
   FETCH NEXT from CRMPSContact_cursor 
   INTO @ProjNo
   --取得客户号
   select @CusNo = CusNo 
   from CRMPSProjectM 
   where ProjNo = @ProjNo
   --得到CRMPSContact中某专案号对应的客户号
   update CRMPSContact 
   set CusNo = @CusNo
   where ProjNo = @ProjNo
   
   --执行错误回滚
   if @@error!=0
   begin
     rollback tran
     return
   end
END
--提交所有变更
COMMIT TRAN
--关闭游标
CLOSE CRMPSContact_cursor
--释放游标
DEALLOCATE CRMPSContact ......
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sql