【例子】SQL-Server存储过程示例

1、主过程proc_insert_cmdb_main

-- =============================================
-- Author:		
-- Create date: 2014/3/5
-- Description:	变更管理更新CMDB 主存储过程
-- =============================================
ALTER PROCEDURE [dbo].[proc_insert_cmdb_main] 
	@CI_ORDER_HEAD_ID VARCHAR(50)='',
    @FLAG CHAR(1) = 'N' output
AS
   declare @RESULT1  VARCHAR(200)
   declare @sql1  VARCHAR(200)

   declare @CI_ORDER_LINE_ID DECIMAL 
   declare @CI_ID DECIMAL 

   declare @CI_CODE VARCHAR(100)
   declare @CI_NAME VARCHAR(500) 
   declare @CATEGORY_CODE VARCHAR(50)
   declare @FN_7 DECIMAL
   declare @FN_8 DECIMAL 
   declare @sql2  VARCHAR(200) /*执行的SQL语句*/
   
   declare @num int 
   declare @countnum int
	 
BEGIN

	SET NOCOUNT ON;
   set @RESULT1 = ''
   set @sql1 = ''

   set @CI_ORDER_LINE_ID = 0
   set @CI_ID  = 0

   set @CI_CODE= ''
   set @CI_NAME= ''
   set @CATEGORY_CODE = ''
   set @FN_7 = 0
   set @FN_8 = 0
   set @sql2 = ''  /*执行的SQL语句*/
   
   set  @num = 0
   set  @countnum = 1
/*============================================================
  生成唯一的CI_CODE:CI_CODE=行表catagery_code+CI_ORDER_LINE_ID
  ============================================================*/
   set @sql1='update T_CI_ORDER_LOGICAL set CI_CODE = CATEGORY_CODE+convert(varchar(18),CI_ORDER_LINE_ID) where CI_ORDER_HEAD_ID='+@CI_ORDER_HEAD_ID
   exec (@sql1)
   set @sql1='update T_CI_ORDER_APPLICATION set CI_CODE = CATEGORY_CODE+convert(varchar(18),CI_ORDER_LINE_ID) where CI_ORDER_HEAD_ID='+@CI_ORDER_HEAD_ID
   exec (@sql1)
   set @sql1='update T_CI_ORDER_PHYSICAL set CI_CODE = CATEGORY_CODE+convert(varchar(18),CI_ORDER_LINE_ID) where CI_ORDER_HEAD_ID='+@CI_ORDER_HEAD_ID
   exec (@sql1)

/*=============================================================
逐个获取更新的配置项条目(行表记录),并调用子存储过程proc_insert_cmdb 逐一处理
===============================================================*/

   select  @countnum = count(*) from T_ORDERCONFIGFORM_V where CI_ORDER_HEAD_ID=@CI_ORDER_HEAD_ID
   if @countnum=0   set @FLAG='Y'
  /*进行数据更新操作*/
  DECLARE MyCursor1 CURSOR LOCAL FORWARD_ONLY for select CI_ORDER_LINE_ID,CI_ID,CI_CODE,CI_NAME,CATEGORY_CODE,FN_7,FN_8 from T_ORDERCONFIGFORM_V where  CI_ORDER_HEAD_ID=@CI_ORDER_HEAD_ID
  
  OPEN MyCursor1 FETCH NEXT FROM MyCursor1 INTO @CI_ORDER_LINE_ID,@CI_ID,@CI_CODE,@CI_NAME,@CATEGORY_CODE,@FN_7,@FN_8

   WHILE @@FETCH_STATUS = 0 
	  BEGIN
	   	/*set @RESULT1 = convert(varchar(18),@CI_ORDER_LINE_ID)+convert(varchar(18),isnull(@CI_ID,0))+@CI_CODE+@CATEGORY_CODE+convert(varchar(18),isnull(@FN_7,0))*/
       /* print('检测点')*/
			 /* 执行数据写入操作 */
		  EXEC proc_insert_cmdb @CI_ORDER_HEAD_ID,@CATEGORY_CODE,@CI_ORDER_LINE_ID,@CI_ID,@CI_CODE,@CI_NAME,@FN_7,@FN_8,@FLAG OUTPUT 
      FETCH NEXT FROM MyCursor1 INTO @CI_ORDER_LINE_ID,@CI_ID,@CI_CODE,@CI_NAME,@CATEGORY_CODE,@FN_7,@FN_8
    END
  CLOSE MyCursor1
  DEALLOCATE MyCursor1 
END

2、子过程proc_insert_cmdb

-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[proc_insert_cmdb] 
	@CI_ORDER_HEAD_ID VARCHAR(50) = '',
	@CATEGORY_CODE CHAR(50) = '',
	@ORDER_LINE_ID  VARCHAR(20) = '',
	@CI_ID DECIMAL = 0,
	@CI_CODE VARCHAR(100) = '',
	@CI_NAME VARCHAR(100) = '',
	@FN_7 DECIMAL = 0,
	@FN_8 DECIMAL = 0,
	@FLAG CHAR(1) = 'N' output
AS
	declare @CATEGORY_CI_TABLENAME VARCHAR(50)
	declare @result VARCHAR(2000)
	declare @result_from VARCHAR(2000)
	declare @result_to VARCHAR(2000) 

	declare @ATTRIBUTE1 VARCHAR(50)
	declare @ATTRIBUTE2 VARCHAR(50)
	declare @ATTRIBUTE3 VARCHAR(50) 
   
	declare @S_TEMP VARCHAR(500) 
	declare @RECORD_VERSION DECIMAL(18,2)
	declare @CI_ORDER_CODE VARCHAR(500)
	declare @countnum_temp int
BEGIN

	SET NOCOUNT ON;
	set @CATEGORY_CI_TABLENAME =''
	set @result = ''
	set @result_from = ''
	set @result_to = ''

	set @ATTRIBUTE1  =''
	set @ATTRIBUTE2 =''
	set @ATTRIBUTE3  =''

	set @S_TEMP  =''
	set @RECORD_VERSION=0
	set @CI_ORDER_CODE=''
	set @countnum_temp =0
	
/*================================
预处理1:获取行表的配置参数
=================================*/
select @CATEGORY_CI_TABLENAME = CATEGORY_CI_TABLENAME,@ATTRIBUTE1=ATTRIBUTE1,@ATTRIBUTE2=ATTRIBUTE2,@ATTRIBUTE3=ATTRIBUTE3 from T_CI_CATEGORY where  CATEGORY_CODE= @CATEGORY_CODE

/*================================
预处理:获取行表的更新sql   赋值给 @result
=================================*/


IF  (@ATTRIBUTE2='A')
  begin
    set @result=(select  ATTRIBUTE_CONFIG_CODE FROM T_ATTRIBUTE_CONFIG 
                 where category_code=@CATEGORY_CODE  and CMDB_UPDATE_FLAG='Y' for xml path(''))
    if LEN(@result)>0
       begin
           set @result_to=REPLACE( @result, '</ATTRIBUTE_CONFIG_CODE><ATTRIBUTE_CONFIG_CODE>',',') 
           set @result_to=REPLACE( @result_to, '<ATTRIBUTE_CONFIG_CODE>','') 
           set @result_to=REPLACE( @result_to, '</ATTRIBUTE_CONFIG_CODE>','') 
    
           set @result_from=REPLACE( @result_to, 'CREATED_DATE','getDate()') 
           set @result_from=REPLACE( @result_from, 'CATEGORY_CODE',''''+@ATTRIBUTE3+'''') 
           set @result_from=REPLACE( @result_from, 'LAST_UPDATE_DATE','getDate()') 
           set @result_from=REPLACE( @result_from, 'RECORD_VERSION','1') 
           set @result_from=case
                when substring (@CATEGORY_CODE, 1 , 13)='ORDER_ONSHELF' 
                    then REPLACE(REPLACE( @result_from, 'GROUNDING_DATE','getDate()') ,'GUARANTEE_DATE','dateadd(year,FN_10,BUY_DATE)')
                when substring (@CATEGORY_CODE, 1 , 12)='ORDER_ONLINE' 
                   then REPLACE( @result_from, 'ON_LINE_DATE','getDate()')         
                else @result_from
                END
           set @result = 'insert into ' + @ATTRIBUTE1 + '(' + @result_to +') select '+ @result_from +' from '+@CATEGORY_CI_TABLENAME +' where CI_ORDER_LINE_ID='+@ORDER_LINE_ID

        end
  end
  else if (@ATTRIBUTE2='U')
  begin
        set @result=(select  ATTRIBUTE_CONFIG_CODE+'=b.'+ATTRIBUTE_CONFIG_CODE+',' FROM T_ATTRIBUTE_CONFIG 
                 where category_code=@CATEGORY_CODE  and CMDB_UPDATE_FLAG='Y' for xml path(''))
       /* PRINT('TT'+@result)*/
        if len(@result)>0 
           begin
               set @result=substring(@result,1,LEN(@result)-1)
               set @result=REPLACE( @result, 'LAST_UPDATE_DATE=b.LAST_UPDATE_DATE','LAST_UPDATE_DATE=getDate()') 
               set @result=case 
                   when  substring(@CATEGORY_CODE,1, 14)='ORDER_OFFSHELF'
                        then REPLACE( @result, 'UNDER_DATE=b.UNDER_DATE','UNDER_DATE=getDate()') 
                   when  substring (@CATEGORY_CODE, 1 , 12)='ORDER_ONLINE' 
                        then REPLACE( @result, 'ON_LINE_DATE=b.ON_LINE_DATE','ON_LINE_DATE=getDate()') 
                   when  substring (@CATEGORY_CODE, 1 , 13)='ORDER_OFFLINE' 
                        then REPLACE( @result, 'OFF_LINE_DATE=b.OFF_LINE_DATE','OFF_LINE_DATE=getDate()')                         
                   else @result
                   end
                  
                set @result = 'update '+ @ATTRIBUTE1 +' set '+ @result + ' from '+@ATTRIBUTE1 + ' a,'+@CATEGORY_CI_TABLENAME +' b where a.ci_id=b.ci_id and b.CI_ORDER_LINE_ID='+@ORDER_LINE_ID

           end
				
  end

/*
 print ('参数: @CATEGORY_CODE='+@CATEGORY_CODE+'  @ORDER_LINE_ID='+@ORDER_LINE_ID +'    @CI_NAME='+@CI_NAME) 
 print ('参数CI_ID:   @CI_ID=:'+convert(varchar(18),@CI_ID) ) 
 print('行表@result='+@result) 
 print('断点2')*/
/*================================================
开启事务
==================================================*/

BEGIN TRANSACTION
BEGIN TRY
 --print('行表@result='+@result)
 /*==============================================
 执行语句1: 更新行表数据更新sql
 @result
 ================================================*/
 if  len(@result)>0
   begin
      exec (@result)
      
       /*特殊处理:*/      
      if (@ATTRIBUTE2='U') 
          begin
               /*设备下线时清除设备上线时的配置数据*/    
              if @CATEGORY_CODE='ORDER_OFFLINE_SERVER'
                   begin
                      set @result = 'update '+ @ATTRIBUTE1 +' set RECORD_VERSION=RECORD_VERSION+1,USE_OBJECTIVE=null,FV_3=null,
                                 FV_6=null,FV_7=null,FV_8=null,FV_9=null,FV_10=null,FV_11=null,FV_12=null,FV_13=null,FV_14=null,
                                 FV_20=null,FV_22=null,FN_4=null,FN_5=null,FN_6=null where ci_id='+ltrim(convert(varchar(18),@CI_ID))
                      --print('1'+@result)
                      exec (@result)
                   end
              else
                /*处理记录版本号*/
                   begin
                      
                      set @result = 'update '+ @ATTRIBUTE1 +' set RECORD_VERSION=RECORD_VERSION+1 where USE_STATUS not in (''Canceled'') and ci_id='+ltrim(convert(varchar(18),@CI_ID))
 --print('1'+@result)
                      exec (@result)
                   end
          end
      
   end


/*================================================================
执行语句2: 1.获取新增配置项CI_ID给@CI_ID
           2.对于新增的配置项,向行表回写CI_ID
==============================================================*/
set @result=''

IF (@ATTRIBUTE2='A')
	begin
	  /*
	   set @result='SELECT @a=CI_ID FROM '+ @ATTRIBUTE1 +' WHERE CI_NAME='''+@CI_NAME+''''  
       print ('  @result='+@result) 
	   exec sp_executesql @result,N'@a int output',@CI_ID output 
       print ('参数CI_ID:   @CI_ID=:'+convert(varchar(18),@CI_ID)) 
  */
  	IF @CATEGORY_CODE='ORDER_ONLINE_VM' or @CATEGORY_CODE='ORDER_ONLINE_LEASEDLINE' 
	        SELECT @CI_ID=CI_ID FROM T_CI_LOGICAL WHERE CI_CODE=@CI_CODE
	ELSE IF SUBSTRING(@CATEGORY_CODE,1,16)='ORDER_ONLINE_APP'
	        SELECT @CI_ID=CI_ID FROM T_CI_APPLICATION WHERE CI_CODE=@CI_CODE
	ELSE IF SUBSTRING(@CATEGORY_CODE,1,13)='ORDER_ONSHELF'
	         SELECT @CI_ID=CI_ID FROM T_CI_PHYSICAL WHERE CI_CODE=@CI_CODE
  
  
  	   set @result = 'update '+@CATEGORY_CI_TABLENAME +' set CI_ID='+Ltrim(convert(varchar(18),@CI_ID))+',CI_CODE='''+@ATTRIBUTE3+'_'+Ltrim(convert(varchar(18),@CI_ID))+''' WHERE (CI_ORDER_LINE_ID='''+@ORDER_LINE_ID+''')'
       /*print('A-IP配置更新:'+@result)*/
		exec (@result)
  	   set @result = 'update '+@ATTRIBUTE1 +' set CI_CODE='''+@ATTRIBUTE3+'_'+Ltrim(convert(varchar(18),@CI_ID))+''' WHERE (CI_CODE='''+@CI_CODE+''')'
	    exec (@result)
	end

    /*print ('参数fn8:   @CI_ID=:'+convert(varchar(18),@FN_8)) 
	print ('参数CI_ID:   @CI_ID=:'+convert(varchar(18),@CI_ID)) */
	--print('断点3')
/*================================================================
执行语句3: 更新关联表
           1. 虚拟机上线/应用上线:增加关系,更新相关配置项状态   (1)虚拟机关联服务器V_S (2)应用关联虚拟机A_V
           2. 虚拟机下线/应用下线:注销关系,更新相关配置项状态

==============================================================*/
SET @countnum_temp=0
select @CI_ORDER_CODE=CI_ORDER_CODE  from T_CI_ORDER_HEAD where CI_ORDER_HEAD_ID=@CI_ORDER_HEAD_ID
IF @CATEGORY_CODE='ORDER_ONLINE_VM' 
         BEGIN
		     INSERT INTO T_CI_RELATIONSHIP (CI_PHYSICAL_ID,CI_LOGICAL_ID,CI_RELATIONSHIP,DELETED_FLAG) VALUES(@FN_7,@CI_ID,'V_S','N')
		     SELECT @S_TEMP=USE_STATUS FROM T_CI_PHYSICAL WHERE CI_ID=@FN_7
		     
		     IF @S_TEMP='Idle' 
		        BEGIN
		           select @RECORD_VERSION=RECORD_VERSION FROM T_CI_PHYSICAL WHERE CI_ID=@FN_7
		           UPDATE T_CI_PHYSICAL SET USE_STATUS='Using',LAST_UPDATE_DATE=getDate(),RECORD_VERSION=RECORD_VERSION+0.01 WHERE CI_ID=@FN_7
 			       /*插入日志*/ 			       
 			       INSERT INTO T_CI_UPDATE_LOG(TABLE_NAME,MASTER_FLAG,CATEGORY_CODE,CI_ID,CI_BATCH_ID,UPDATE_NAME,UPDATE_BEFORE_NAME,UPDATE_BEFORE_VALUE,UPDATE_AFTER_NAME,UPDATE_AFTER_VALUE,UPDATE_FLAG,DESCRIPTION,CREATED_BY,CREATED_DATE)
			     	   VALUES('T_CI_PHYSICAL','Y','CMDB_SERVER',@FN_7,@RECORD_VERSION+0.01,'USE_STATUS','空闲','Idle','使用','Using','U',
				          '虚拟机上线表单编号='+@CI_ORDER_CODE,'PROGRAM',GETDATE())
                END
               
         END

     ELSE IF @CATEGORY_CODE='ORDER_OFFLINE_VM' 
         BEGIN
             select @FN_7=FN_7 from T_CI_LOGICAL where CI_ID=@CI_ID
             delete from T_CI_RELATIONSHIP WHERE CI_LOGICAL_ID=@CI_ID AND CI_PHYSICAL_ID=@FN_7
             SELECT @countnum_temp=COUNT(RELATIONSHIP_ID) FROM T_CI_RELATIONSHIP WHERE CI_PHYSICAL_ID=@FN_7 AND DELETED_FLAG='N' 
                                  AND ((CASE WHEN CI_LOGICAL_ID=NULL THEN 0 ELSE CI_LOGICAL_ID END)>0 OR (CASE WHEN CI_APPLICATION_ID=NULL THEN 0 ELSE CI_APPLICATION_ID END)>0)
			 IF @countnum_temp=0 
			    begin
			       select @RECORD_VERSION=RECORD_VERSION FROM T_CI_PHYSICAL WHERE CI_ID=@FN_7
			       UPDATE T_CI_PHYSICAL SET USE_STATUS='Idle',LAST_UPDATE_DATE=getDate(),RECORD_VERSION=RECORD_VERSION+0.01 WHERE CI_ID=@FN_7
                   /*插入日志*/ 			       
				   INSERT INTO T_CI_UPDATE_LOG(TABLE_NAME,MASTER_FLAG,CATEGORY_CODE,CI_ID,CI_BATCH_ID,UPDATE_NAME,UPDATE_BEFORE_NAME,UPDATE_BEFORE_VALUE,UPDATE_AFTER_NAME,UPDATE_AFTER_VALUE,UPDATE_FLAG,DESCRIPTION,CREATED_BY,CREATED_DATE)
				        VALUES('T_CI_PHYSICAL','Y','CMDB_SERVER',@FN_7,@RECORD_VERSION+0.01,'USE_STATUS','使用','Using','空闲','Idle','U',
			                         '虚拟机下线表单编号='+@CI_ORDER_CODE,'PROGRAM',GETDATE())
			    end	                         
         END 
     ELSE IF SUBSTRING(@CATEGORY_CODE,1,16)='ORDER_ONLINE_APP'
         BEGIN         
		    INSERT INTO T_CI_RELATIONSHIP (CI_LOGICAL_ID,CI_APPLICATION_ID,CI_RELATIONSHIP,DELETED_FLAG) VALUES(@FN_8,@CI_ID,'A_V','N')
		    SELECT @S_TEMP=USE_STATUS FROM T_CI_LOGICAL WHERE CI_ID=@FN_8
		    IF @S_TEMP='Idle' 
		        BEGIN
		           select @RECORD_VERSION=RECORD_VERSION FROM T_CI_LOGICAL WHERE CI_ID=@FN_8		        
			       UPDATE T_CI_LOGICAL SET USE_STATUS='Using',LAST_UPDATE_DATE=getDate(),RECORD_VERSION=RECORD_VERSION+0.01 WHERE CI_ID=@FN_8
                   /*插入日志*/
			       INSERT INTO T_CI_UPDATE_LOG(TABLE_NAME,MASTER_FLAG,CATEGORY_CODE,CI_ID,CI_BATCH_ID,UPDATE_NAME,UPDATE_BEFORE_NAME,UPDATE_BEFORE_VALUE,UPDATE_AFTER_NAME,UPDATE_AFTER_VALUE,UPDATE_FLAG,DESCRIPTION,CREATED_BY,CREATED_DATE)
				       VALUES('T_CI_LOGICAL','Y','CMDB_VM',@FN_8,@RECORD_VERSION+0.01,'USE_STATUS','空闲','Idle','使用','Using','U',
				       '应用上线表单编号='+@CI_ORDER_CODE,'PROGRAM',GETDATE())
                END
         END         

     ELSE IF SUBSTRING(@CATEGORY_CODE,1,17) ='ORDER_OFFLINE_APP' 
         BEGIN
             select @FN_8=FN_8 from T_CI_APPLICATION where CI_ID=@CI_ID
             delete from T_CI_RELATIONSHIP WHERE CI_APPLICATION_ID=@CI_ID AND CI_LOGICAL_ID=@FN_8
             SELECT @countnum_temp=COUNT(RELATIONSHIP_ID) FROM T_CI_RELATIONSHIP WHERE CI_LOGICAL_ID=@FN_8 AND DELETED_FLAG='N' 
                      AND (CASE WHEN CI_APPLICATION_ID=NULL THEN 0 ELSE CI_APPLICATION_ID END)>0
             IF @countnum_temp=0
                  BEGIN  
                        select @RECORD_VERSION=RECORD_VERSION FROM T_CI_LOGICAL WHERE CI_ID=@FN_8	
             			UPDATE T_CI_LOGICAL SET USE_STATUS='Idle',LAST_UPDATE_DATE=getDate(),RECORD_VERSION=RECORD_VERSION+0.01 WHERE CI_ID=@FN_8
                        /*插入日志*/ 			            				                         
				        INSERT INTO T_CI_UPDATE_LOG(TABLE_NAME,MASTER_FLAG,CATEGORY_CODE,CI_ID,CI_BATCH_ID,UPDATE_NAME,UPDATE_BEFORE_NAME,UPDATE_BEFORE_VALUE,UPDATE_AFTER_NAME,UPDATE_AFTER_VALUE,UPDATE_FLAG,DESCRIPTION,CREATED_BY,CREATED_DATE)
				               VALUES('T_CI_LOGICAL','Y','CMDB_VM',@FN_8,@RECORD_VERSION+0.01,'USE_STATUS','使用','Using','空闲','Idle','U',
				                        '应用下线表单编号='+@CI_ORDER_CODE,'PROGRAM',GETDATE())
				  END

         END 
--print('断点4')
/*==============================================================================
执行语句4:更新IP配置信息T_CI_FOLLOW_TABLE,更新规则
          1.变更配置项的IP配置数据更新规则:先删除'DELETE'',''UPDATE'两类数据,再增加'INSERT'',''UPDATE'两类数据
          2.特殊处理:(1)服务器下线时删除IP配置数据 (2)虚拟机下线、专线下线、设备下架时,注销IP配置数据
================================================================================*/
  
  /*判断是否有IP更新记录*/ 
  set @result=''
  select  @countnum_temp = count(CI_ORDER_LINE_ID) from T_CI_ORDER_FOLLOW_TABLE where CI_ORDER_LINE_ID =@ORDER_LINE_ID and CATEGORY_CODE=@CATEGORY_CODE

  IF (@countnum_temp>0)  /*有*/
     BEGIN
	    /*1.删除'update'和'delete'两类数据*/
	    delete from T_CI_FOLLOW_TABLE where FOLLOW_ID IN (select CONVERT(decimal,ATTRIBUTE10) from T_CI_ORDER_FOLLOW_TABLE 
                                  where CI_ORDER_LINE_ID =@ORDER_LINE_ID and CATEGORY_CODE=@CATEGORY_CODE and ATTRIBUTE5 in ('DELETE','UPDATE'))             
	   
	    /*2.插入'update'和'insert'两类数据*/
		insert into T_CI_FOLLOW_TABLE (FOLLOW_CLASS,CATEGORY_CODE,CI_ORDER_LINE_ID,CI_ID,CONNECT_TYPE,SOURCE,TARGET,IP_ADDRESS,IP_NETCODE,IP_GATEWAY,IP_VLAN,IP_PORT,
		DESCRIPTION,CREATED_BY,CREATED_DATE,LAST_UPDATED_BY,LAST_UPDATE_DATE,DELETED_FLAG,RECORD_VERSION,ATTRIBUTE1,ATTRIBUTE2,ATTRIBUTE3,
		ATTRIBUTE4) select FOLLOW_CLASS,ATTRIBUTE6,CI_ORDER_LINE_ID,CASE WHEN CI_ID IS NULL THEN @CI_ID WHEN CI_ID=0 THEN @CI_ID  ELSE CI_ID END ,CONNECT_TYPE,SOURCE,TARGET,IP_ADDRESS,IP_NETCODE,IP_GATEWAY,IP_VLAN,IP_PORT,
		DESCRIPTION,CREATED_BY,CREATED_DATE,LAST_UPDATED_BY,LAST_UPDATE_DATE,'N',RECORD_VERSION,ATTRIBUTE1,ATTRIBUTE2,ATTRIBUTE3,
		ATTRIBUTE4 from T_CI_ORDER_FOLLOW_TABLE  WHERE T_CI_ORDER_FOLLOW_TABLE.CI_ORDER_LINE_ID = @ORDER_LINE_ID and T_CI_ORDER_FOLLOW_TABLE.CATEGORY_CODE=@CATEGORY_CODE and ATTRIBUTE5 IN ('INSERT','UPDATE')
      END
  ELSE 
      BEGIN
         set @result= case
			when @CATEGORY_CODE='ORDER_OFFLINE_SERVER'
				then 'delete from T_CI_FOLLOW_TABLE where  CI_ID='+CONVERT(varchar(100), @CI_ID)
			when @CATEGORY_CODE='ORDER_OFFLINE_VM' OR  @CATEGORY_CODE='ORDER_OFFSHELF_NETWORK' OR  @CATEGORY_CODE='ORDER_OFFLINE_LEASEDLINE' 
				then 'update T_CI_FOLLOW_TABLE set DELETED_FLAG=''Y'' where  CI_ID='+CONVERT(varchar(100), @CI_ID)+' and CATEGORY_CODE='''+@CATEGORY_CODE+''''
	        END  
	     --print('IP注销:'+@result)
  	     if len(@result)>0 exec (@result)  
      END
--print('断点5')
 /*====================
 提交事务 
 ======================*/

  COMMIT
  set @FLAG='Y'
END TRY
BEGIN CATCH
     ROLLBACK
END CATCH 
 
END

猜你喜欢

转载自uule.iteye.com/blog/2036465