你的位置:首页 > 数据库

[数据库]SQL存储过程,使用事务(try catch),游标


CREATE proc [dbo].[Sys_Rebate_Equity]    ASdeclare @fMemberID varchar(50)--用户IDdeclare @Rebate decimal(18,2)--总股权数  BEGIN  begin try   Begin Transaction  --开始事务    DECLARE cursor1 CURSOR for    --定义游标cursor1    select fMemberID,sum(fNumber) as 'fNumber' from BP_Equity where fNumber>0 group by fMemberID  --使用游标的对象     open cursor1     --打开游标     fetch next from cursor1 into @fMemberID,@Rebate  --将游标向下移1行,获取的数据放入之前定义的变量@fMemberID,@Rebate中     while @@FETCH_STATUS=0  --判断是否成功获取数据       begin        select 1  --进行相应处理        fetch next from cursor1 into @id  --将游标向下移1行      end    close cursor1  --关闭游标    deallocate cursor1 --删除游标引用    select 888   Commit Transaction  --提交事务  End Try  Begin Catch    if @@trancount > 0 ROLLBACK TRANSACTION --回滚事务    Select 8888      End Catch  END