WEB开发网
开发学院数据库MSSQL Server 游标与事物与错误消息机制 阅读

游标与事物与错误消息机制

 2010-03-31 00:00:00 来源:WEB开发网   
核心提示: 我在实际的应用中发现一个问题,对于一个复杂的存储过程,游标与事物与错误消息机制(3),把上面三种用法综合到一起,会提高不少的执行效率,这就很好将整个构想实现了,例如:SETNOCOUNTON;BEGINTRYBEGINTRANSACTIONtran1DECLARE@proarageidBIGIN

我在实际的应用中发现一个问题,对于一个复杂的存储过程,把上面三种用法综合到一起,会提高不少的执行效率。一是为了找到错误点,回滚事务,把 try和 transaction组合到一起,如果大量数据要处理,可能会用到游标,有时候在想,事务当执行commit的时候才会永久地处理数据,是不是在用游标的时候也这样,把游标写到事务里,把所有的游标都执行完毕,再进行事务处理,如果异常则回滚。试了一下,果然快很多。而且在Transact-Sql里同一存储过程定义的变量,在整个运行周期都是有效的,这就很好将整个构想实现了。例如:

   SET NOCOUNT ON;
          BEGIN TRY
          
           BEGIN TRANSACTION    tran1
          
                  DECLARE @proarageid BIGINT,@procomid BIGINT,@proagentid BIGINT,@progropid BIGINT
                
                 ---语句
           
 DECLARE acursor CURSOR
FOR SELECT id,provicename,cityname FROM Ass_ArrearageTemporary
                 OPEN acursor
                 FETCH NEXT FROM acursor INTO @proarageid,@procomid,@proagentid                 WHILE @@FETCH_STATUS = 0
                 BEGIN
                    ---语句
                         
                   FETCH NEXT FROM acursor INTO @proarageid,@procomid,@proagentid
                 END
                
                 COMMIT TRANSACTION tran1
                 CLOSE acursor
                 DEALLOCATE acursor
     END TRY
    begin CATCH
           IF @@TRANCOUNT > 0
        BEGIN
          CLOSE acursor
          DEALLOCATE acursor
          ROLLBACK  TRANSACTION tran1
          return
       END
    END CATCH

虽不是含量很高,但也是笔者的心血。

上一页  1 2 3 

Tags:游标 事物 错误

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接