linuxjava01ID:linuxjava01
192次访问,排名2万外好友1人,关注者1
linuxjava01的文章
原创 7 篇
翻译 0 篇
转载 0 篇
评论 24 篇
最近评论
文章分类
    收藏
      相册
      存档
      软件项目交易
      订阅我的博客
      XML聚合  FeedSky
      订阅到鲜果
      订阅到Google
      订阅到抓虾
      订阅到BlogLines
      订阅到Yahoo
      订阅到GouGou
      订阅到飞鸽
      订阅到Rojo
      订阅到newsgator
      订阅到netvibes

      原创 存储过程:关于事务的一些操作收藏

       | 旧一篇: 存储过程:关于装配Sql语句的一些操作

      ALTER PROCEDURE [dbo].[KM008_InsertOrUpdate]

      ----商谈计划

      --商谈计划编码
      @BargainSchID bigint,

      --保密级别
      @SecretLevel char(2),

      --相关客户
      @ClientID varchar(20),

      --相关联系人
      @KeyPersonID varchar(20),

      --主题
      @BargainSubject nvarchar(50),

      --类型
      @BargainType char(2),

      --执行者
      @BargainExecutant nvarchar(50),

      --优先度
      @BargainPriority char(2),

      --描述
      @BargainDescription nvarchar(500), --9

      --开始日期
      @BargainFromDate datetime,

      --开始时间
      @BargainFromTime nvarchar(10),

      --结束日期
      @BargainEndDate datetime,

      --结束时间
      @BargainEndTime nvarchar(10),

      --执行状态
      @ExecuteStat char(2),

      --行版本      
      @RowVer timestamp,   

      --更新者       
      @UpdateUserID nvarchar(10),

      --主表操作标志          
      @PriTableMode nvarchar(20),      --17 


             
      ----商谈计划明细
       
      --执行编码        
      @BargainExeIDArray varchar(8000),  

      --执行者       
      @ExecutantNameArray varchar(8000),     

      --执行日        
      @ExecuteDateArray varchar(8000),   

      --执行起止日期       
      @ExecuteTimeArray varchar(8000),     

      --执行状况       
      @ExecuteStatArray varchar(8000),    
       
      --操作标志     
      @ExeTableMode varchar(8000),

      --自定义返回值           
      @OutParam char(1) output,

      --返回主键
      @ReturnBargainSchID bigint output          
       
       
      AS
           declare @E_SUCCESS   varchar(1) set @E_SUCCESS='0'     --0:正常结束
       
           declare @E_NODATA    varchar(1) set  @E_NODATA='1'      --1:对象数据不存在,检索不到数据
       
           declare @E_ERROR2   varchar(1) set  @E_ERROR2='6'       --6:主键重复
       
           declare @E_ERROR3   varchar(1) set  @E_ERROR3='7'    --7:逻辑排他
          
           declare @E_ERROR4   varchar(1) set  @E_ERROR4='8'    --8:业务排他
       
           declare @E_ERROR5   varchar(1) set   @E_ERROR5='9'     --9:异常终止
          
           declare @SystemTime datetime       --数据库时间
       
       
       ----明细表
           
       declare @Array_BargainExeID bigint
                
       declare @Array_ExecutantName nvarchar(50) 
                  
       declare @Array_ExecuteDate nvarchar(50)   
            
       declare @Array_ExecuteTime nvarchar(50)    
            
       declare @Array_ExecuteStat nvarchar(50)   
                 
       declare @Array_ExeTableMode nvarchar(50)
       
       declare @string7 nvarchar(50)
       
       declare @string8 nvarchar(50)

          
      --存储过程开始
      BEGIN try    

       BEGIN transaction TransUpdateOrInsert
       
         --设置默认返回值
       SET @OutParam = @E_SUCCESS

       SET @SystemTime=getdate()

      --项目详细检索
      IF @PriTableMode = 'Update'
      BEGIN

      UPDATE KM012ConPlan
      SET  
      SecretLevel=@SecretLevel,        
      ClientID=@ClientID,               
      KeyPersonID=@KeyPersonID,       
      BargainSubject=@BargainSubject,           
      BargainType=@BargainType,       
      BargainExecutant=@BargainExecutant,       
      BargainPriority=@BargainPriority,         
      BargainDescription=@BargainDescription,
              
      BargainFromDate=@BargainFromDate,        
      BargainFromTime=@BargainFromTime,           
      BargainEndDate=@BargainEndDate,          
      BargainEndTime=@BargainEndTime,      
      ExecuteStat=@ExecuteStat,        
                       
      UpdateUserID=@UpdateUserID,
      UpdatedDate= @SystemTime
      WHERE BargainSchID=@BargainSchID And RowVer=@RowVer

      if @@Rowcount=0
       begin
        ROLLBACK Transaction TransUpdateOrInsert
        set @OutParam=@E_ERROR3 return
       end
        
      END

      ----商谈计划
      IF @PriTableMode = 'Insert'
      BEGIN
       INSERT Into KM012ConPlan
        (
        SecretLevel,        
        ClientID,               
        KeyPersonID,       
        BargainSubject,           
        BargainType,       
        BargainExecutant,       
        BargainPriority,         
        BargainDescription,
              
        BargainFromDate,        
        BargainFromTime,           
        BargainEndDate,          
        BargainEndTime,      
        ExecuteStat,            
        DeleteFlg,
        CreatedUserID,
        CreatedDate,
        UpdateUserID,
        UpdatedDate
        )
        VALUES
        (
        @SecretLevel,        
        @ClientID,               
        @KeyPersonID,       
        @BargainSubject,           
        @BargainType,       
        @BargainExecutant,       
        @BargainPriority,         
        @BargainDescription,
              
        @BargainFromDate,        
        @BargainFromTime,           
        @BargainEndDate,          
        @BargainEndTime,      
        @ExecuteStat,
        '0',
        @UpdateUserID,
        @SystemTime,
        @UpdateUserID,
        @SystemTime
        ) 
      if @@Rowcount=0
         begin
          ROLLBACK Transaction TransUpdateOrInsert
          set @OutParam=@E_ERROR3 return
         end
       else
         begin
          set @BargainSchID=@@Identity
          set @ReturnBargainSchID=@BargainSchID
          Print @BargainSchID
         end   
      END

      ----商谈计划明细
      if @ExeTableMode is null or @ExeTableMode= ''
      begin
       SET @OutParam = @E_SUCCESS
       Commit transaction TransUpdateOrInsert
       return
      end
      else
      begin

      declare curRestHotelDish cursor for

      select * from dbo.SplitList('>',@BargainExeIDArray,@ExecutantNameArray,@ExecuteDateArray,@ExecuteTimeArray,@ExecuteStatArray,@ExeTableMode,'','')


      --打开游标
      OPEN curRestHotelDish

      --取出游标数据
      FETCH NEXT FROM curRestHotelDish INTO @Array_BargainExeID,@Array_ExecutantName,@Array_ExecuteDate,@Array_ExecuteTime,@Array_ExecuteStat,@Array_ExeTableMode,@string7,@string8

      --数据取得失败的场合
      IF @@FETCH_STATUS <> 0
      BEGIN

       SET @OutParam=2
       CLOSE curRestHotelDish
       DEALLOCATE curRestHotelDish
       return
      END

      --循环取得数据
      WHILE @@FETCH_STATUS = 0

      BEGIN

      if @Array_ExeTableMode='DELETE'

      BEGIN
      Delete From  KM013ConPlanExcD
      WHERE KM013ConPlanExcD.BargainExeID=@Array_BargainExeID

      --Update  KM013ConPlanExcD
      --Set
      --DeleteFlg='1',
      --UpdateUserID=@UpdateUserID
      --UpdatedDate=@SystemTime
      --WHERE KM013ConPlanExcD.BargainExeID=@Array_BargainExeID

      END

      if @Array_ExeTableMode='INSERT'

      BEGIN

      INSERT KM013ConPlanExcD
        (
        BargainSchID,
        ExecutantName,
        ExecuteDate ,
        ExecuteTime,
        ExecuteStat,
        
        DeleteFlg,
        CreatedUserID,
        CreatedDate,
        UpdateUserID,
        UpdatedDate
        )
        VALUES
        (
        @BargainSchID,
        @Array_ExecutantName,
        @Array_ExecuteDate ,
        @Array_ExecuteTime,
        @Array_ExecuteStat,
        
        '0',
        @UpdateUserID,
        @SystemTime,
        @UpdateUserID,
        @SystemTime
        ) 

      END

      if @Array_ExeTableMode='UPDATE'

      BEGIN

      Update KM013ConPlanExcD
        Set
        ExecutantName=@Array_ExecutantName,
        ExecuteDate =@Array_ExecuteDate,
        ExecuteTime =@Array_ExecuteTime,
        ExecuteStat =@Array_ExecuteStat,
        UpdateUserID=@UpdateUserID,
        UpdatedDate=@SystemTime
        
        Where KM013ConPlanExcD.BargainExeID=@Array_BargainExeID

      END

      --取数据
      FETCH NEXT FROM curRestHotelDish INTO @Array_BargainExeID,@Array_ExecutantName,@Array_ExecuteDate,@Array_ExecuteTime,@Array_ExecuteStat,@Array_ExeTableMode,@string7,@string8

      END
      END


      Commit transaction TransUpdateOrInsert
      set @OutParam=@E_SUCCESS 
      set @ReturnBargainSchID=@BargainSchID

      --存储过程结束                   
      END try


      --捕获异常
      BEGIN catch
       Begin 
        --设置异常
        set @OutParam=@E_ERROR5
        if  cursor_status('local','curRestHotelDish')<> -3
          begin  
          CLOSE curRestHotelDish
          DEALLOCATE curRestHotelDish 
          end
        ROLLBACK Transaction TransUpdateOrInsert
       End
      END catch

       

      发表于 @ 2008年01月17日 17:23:00|评论(loading...)|编辑

       | 旧一篇: 存储过程:关于装配Sql语句的一些操作

      评论:没有评论。

      发表评论  


      当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
      Csdn Blog version 3.1a
      Copyright © linuxjava01