CREATE PROCEDURE wg_PP_add


 AS
declare @pro_dm  nvarchar(8)

declare @pro_name1 varchar(50)
declare @pro_name2 varchar(50)
declare @pro_name3 varchar(50)
declare @pro_name4 varchar(50)
declare @pro_name5 varchar(50)
declare @pro_name6 varchar(50)
declare @pro_name7 varchar(50)
declare @pro_name8 varchar(50)

declare @pro_value1 varchar(255)
declare @pro_value2 varchar(255)
declare @pro_value3 varchar(255)
declare @pro_value4 varchar(255)
declare @pro_value5 varchar(255)
declare @pro_value6 varchar(255)
declare @pro_value7 varchar(255)
declare @pro_value8 varchar(255)

declare @pro_pp varchar(1000)

declare @cur_char1 char(1)
declare @cur_char2 char(1)
declare @cur_pp nvarchar(1000)
declare @order_max char(2)
declare @i  int

declare outer_cursor CURSOR FOR
select
 WG_GGSXGF_NEW.DM,

 WG_GGSXGF_NEW.SX1,
 WG_BZDM_NEW.SX1,
 WG_GGSXGF_NEW.SX2,
 WG_BZDM_NEW.SX2,
 WG_GGSXGF_NEW.SX3,
 WG_BZDM_NEW.SX3,
 WG_GGSXGF_NEW.SX4,
 WG_BZDM_NEW.SX4,
 WG_GGSXGF_NEW.SX5,
 WG_BZDM_NEW.SX5,
 WG_GGSXGF_NEW.SX6,
 WG_BZDM_NEW.SX6,
 WG_GGSXGF_NEW.SX7,
 WG_BZDM_NEW.SX7,
 WG_GGSXGF_NEW.SX8,
 WG_BZDM_NEW.SX8,

 WG_GGSXGF_NEW.PP

from   WG_GGSXGF_NEW,WG_BZDM_NEW where substring(WG_BZDM_NEW.WZMC,1,8)=WG_GGSXGF_NEW.DM --and wg_bzdm.new.wzmc=''
        
OPEN outer_cursor

FETCH NEXT FROM outer_cursor
INTO  @pro_dm, 

  @pro_name1 ,
  @pro_name2 ,
  @pro_name3 ,
  @pro_name4,
  @pro_name5 ,
  @pro_name6,
  @pro_name7 ,
  @pro_name8 ,

  @pro_value1 ,
  @pro_value2 ,
  @pro_value3,
  @pro_value4,
  @pro_value5,
  @pro_value6 ,
  @pro_value7 ,
  @pro_value8,
 
  @pro_pp

--如果游标能正常取得记录,则继续循环
WHILE @@FETCH_STATUS = 0
BEGIN

   --属性1的处理过程
    if(patindex('%品牌%',@pro_name1)<>0)  --如果属性1的名称中有“品牌”字样,下同属性2——8,则进入品牌修改块
        begin--1
             
           set @pro_value1=ltrim(@pro_value1)
           if(@pro_value1<>null and @pro_value1<>'') --如果属性1的值非空,则进入品牌修改块
                begin--2

                    if(@pro_pp=null or @pro_pp='')              --如果品牌字段为空,则新增一个品牌
                       update WG_GGSXGF_NEW set pp='01'+@pro_value1+';' where DM=@pro_dm

                    else if(patindex('%'+@pro_value1+'%',@pro_pp)=0)  --否则如果品牌字段中没有当前属性1的值
                       begin--3
                           
                             set @cur_pp =substring(@pro_pp,1,len(@pro_pp)-1)  --将当前品牌字段中的字符串减去末尾的分号,赋给新变量
                      
                             while (patindex('%;%',@cur_pp)<>0)  --将新变量串按分号进行分割,以找到最后一个分号后面的子串
                                  begin--4
                                     set @cur_pp=substring(@cur_pp,patindex('%;%',@cur_pp)+1,len(@cur_pp))
                                  end--4
                                                                                                       
                              set @cur_char1=substring(@cur_pp,1,1)  --将分割后的子串第一位赋予字符变量1,为品牌序号的高位
                              set @cur_char2=substring(@cur_pp,2,1)  --将分割后的子串第二位赋予字符变量2,为品牌序号的低位
                             
                              set @cur_char2=char(ascii(@cur_char2)+1) --低位加1
                              set @i=1    
     
     if(ascii(@cur_char2)=58)  --如果低位加1之后为0,则高位要进位
                                begin--5
                                  set @cur_char2='0'
                                  if(@cur_char1='9')      --如果高位为9,则高位不再进位,不进行插入操作,报溢出错误
                                        set @i=0                       
                                  else set @cur_char1=char(ascii(@cur_char1)+1)
                                end--5

                               if(@i=1)                       
                                 begin--7
           set @order_max=@cur_char1+@cur_char2 --将新得到的品牌序号赋给order_max
                                    update WG_GGSXGF_NEW set pp=pp+@order_max+@pro_value1+';'  --插入新品牌
                                 end--7
                              else  print(' 序号已满,溢出!!!')

                       end--3

                end--2
        end--1
  
 --属性2的处理过程
    if(patindex('%品牌%',@pro_name2)<>0)  --如果属性2的名称中有“品牌”字样
        begin--1
             set @pro_value2=ltrim(@pro_value2)
           if(@pro_value2<>null and @pro_value2<>'') --如果属性2的值非空,则进入品牌修改块
                begin--2

                    if(@pro_pp=null or @pro_pp='')              --如果品牌字段为空,则新增一个品牌
                       update WG_GGSXGF_NEW set pp='01'+@pro_value2+';' where DM=@pro_dm  ---2

                    else if(patindex('%'+@pro_value2+'%',@pro_pp)=0)  --否则如果品牌字段中没有当前属性2的值
                       begin--3
                        
                             set @cur_pp =substring(@pro_pp,1,len(@pro_pp)-1)  --将当前品牌字段中的字符串减去末尾的分号,赋给新变量
                      
                             while (patindex('%;%',@cur_pp)<>0)  --将新变量串按分号进行分割,以找到最后一个分号后面的子串
                                  begin--4
                                     set @cur_pp=substring(@cur_pp,patindex('%;%',@cur_pp)+1,len(@cur_pp))
                                  end--4
                                                                       
                              set @cur_char1=substring(@cur_pp,1,1)  --将分割后的子串第一位赋予字符变量1,为品牌序号的高位
                              set @cur_char2=substring(@cur_pp,2,1)  --将分割后的子串第二位赋予字符变量2,为品牌序号的低位
                             
                              set @cur_char2=char(ascii(@cur_char2)+1) --低位加1  
     set @i=1     

     if(ascii(@cur_char2)=58)  --如果低位加1之后为0,则高位要进位
                                begin--5
                                  set @cur_char2='0'
                                  if(@cur_char1='9')      --如果高位为9,则高位不再进位,不进行插入操作,报溢出错误
                                        set @i=0                       
                                  else set @cur_char1=char(ascii(@cur_char1)+1)
                                end--5

                               if(@i=1)                       
                                 begin--7
           set @order_max=@cur_char1+@cur_char2 --将新得到的品牌序号赋给order_max
                                    update WG_GGSXGF_NEW set pp=pp+@order_max+@pro_value2+';'  --插入新品牌
                                 end--7
                              else  print(' 序号已满,溢出!!!')

                       end--3
                end--2
        end--1

 --属性3的处理过程
    if(patindex('%品牌%',@pro_name3)<>0)  --如果属性3的名称中有“品牌”字样
        begin--1
               set @pro_value3=ltrim(@pro_value3)
           if(@pro_value3<>null and @pro_value3<>'') --如果属性3的值非空,则进入品牌修改块
                begin--2

                    if(@pro_pp=null or @pro_pp='')              --如果品牌字段为空,则新增一个品牌
                       update WG_GGSXGF_NEW set pp='01'+@pro_value3+';' where DM=@pro_dm   ----3

                    else if(patindex('%'+@pro_value3+'%',@pro_pp)=0)  --否则如果品牌字段中没有当前属性3的值
                       begin--3
                       
                             set @cur_pp =substring(@pro_pp,1,len(@pro_pp)-1)  --将当前品牌字段中的字符串减去末尾的分号,赋给新变量
                      
                             while (patindex('%;%',@cur_pp)<>0)  --将新变量串按分号进行分割,以找到最后一个分号后面的子串
                                  begin--4
                                     set @cur_pp=substring(@cur_pp,patindex('%;%',@cur_pp)+1,len(@cur_pp))
                                  end--4
                                                                                  
                              set @cur_char1=substring(@cur_pp,1,1)  --将分割后的子串第一位赋予字符变量1,为品牌序号的高位
                              set @cur_char2=substring(@cur_pp,2,1)  --将分割后的子串第二位赋予字符变量2,为品牌序号的低位
                             
                             set @cur_char2=char(ascii(@cur_char2)+1) --低位加1 
     set @i=1     

     if(ascii(@cur_char2)=58)  --如果低位加1之后为0,则高位要进位
                                begin--5
                                  set @cur_char2='0'
                                  if(@cur_char1='9')      --如果高位为9,则高位不再进位,不进行插入操作,报溢出错误
                                        set @i=0                       
                                  else set @cur_char1=char(ascii(@cur_char1)+1)
                                end--5

                               if(@i=1)                       
                                 begin--7
           set @order_max=@cur_char1+@cur_char2 --将新得到的品牌序号赋给order_max
                                    update WG_GGSXGF_NEW set pp=pp+@order_max+@pro_value3+';'  --插入新品牌
                                 end--7
                              else  print(' 序号已满,溢出!!!')

                       end--3
                end--2
        end--1

--属性4的处理过程
    if(patindex('%品牌%',@pro_name4)<>0)  --如果属性4的名称中有“品牌”字样
        begin--1
               set @pro_value4=ltrim(@pro_value4)
           if(@pro_value4<>null and @pro_value4<>'') --如果属性4的值非空,则进入品牌修改块
                begin--2

                    if(@pro_pp=null or @pro_pp='')              --如果品牌字段为空,则新增一个品牌
                       update WG_GGSXGF_NEW set pp='01'+@pro_value4+';' where DM=@pro_dm   ----4

                    else if(patindex('%'+@pro_value4+'%',@pro_pp)=0)  --否则如果品牌字段中没有当前属性4的值
                       begin--3
                          
                             set @cur_pp =substring(@pro_pp,1,len(@pro_pp)-1)  --将当前品牌字段中的字符串减去末尾的分号,赋给新变量
                      
                             while (patindex('%;%',@cur_pp)<>0)  --将新变量串按分号进行分割,以找到最后一个分号后面的子串
                                  begin--4
                                     set @cur_pp=substring(@cur_pp,patindex('%;%',@cur_pp)+1,len(@cur_pp))
                                  end--4
                           
                              set @cur_char1=substring(@cur_pp,1,1)  --将分割后的子串第一位赋予字符变量1,为品牌序号的高位
                              set @cur_char2=substring(@cur_pp,2,1)  --将分割后的子串第二位赋予字符变量2,为品牌序号的低位
                             
                              set @cur_char2=char(ascii(@cur_char2)+1) --低位加1 
     set @i=1     

     if(ascii(@cur_char2)=58)  --如果低位加1之后为0,则高位要进位
                                begin--5
                                  set @cur_char2='0'
                                  if(@cur_char1='9')      --如果高位为9,则高位不再进位,不进行插入操作,报溢出错误
                                        set @i=0                       
                                  else set @cur_char1=char(ascii(@cur_char1)+1)
                                end--5

                               if(@i=1)                       
                                 begin--7
           set @order_max=@cur_char1+@cur_char2 --将新得到的品牌序号赋给order_max
                                    update WG_GGSXGF_NEW set pp=pp+@order_max+@pro_value4+';'  --插入新品牌
                                 end--7
                              else  print(' 序号已满,溢出!!!')

                       end--3
                end--2
        end--1

--属性5的处理过程
    if(patindex('%品牌%',@pro_name5)<>0)  --如果属性5的名称中有“品牌”字样
        begin--1
               set @pro_value5=ltrim(@pro_value5)
           if(@pro_value5<>null and @pro_value5<>'') --如果属性5的值非空,则进入品牌修改块
                begin--2

                    if(@pro_pp=null or @pro_pp='')              --如果品牌字段为空,则新增一个品牌
                       update WG_GGSXGF_NEW set pp='01'+@pro_value5+';' where DM=@pro_dm   ----5

                    else if(patindex('%'+@pro_value5+'%',@pro_pp)=0)  --否则如果品牌字段中没有当前属性5的值
                       begin--3
                           
                             set @cur_pp =substring(@pro_pp,1,len(@pro_pp)-1)  --将当前品牌字段中的字符串减去末尾的分号,赋给新变量
                      
                             while (patindex('%;%',@cur_pp)<>0)  --将新变量串按分号进行分割,以找到最后一个分号后面的子串
                                  begin--4
                                     set @cur_pp=substring(@cur_pp,patindex('%;%',@cur_pp)+1,len(@cur_pp))
                                  end--4
                           
                              set @cur_char1=substring(@cur_pp,1,1)  --将分割后的子串第一位赋予字符变量1,为品牌序号的高位
                              set @cur_char2=substring(@cur_pp,2,1)  --将分割后的子串第二位赋予字符变量2,为品牌序号的低位
                             
                              set @cur_char2=char(ascii(@cur_char2)+1) --低位加1 
     set @i=1     

     if(ascii(@cur_char2)=58)  --如果低位加1之后为0,则高位要进位
                                begin--5
                                  set @cur_char2='0'
                                  if(@cur_char1='9')      --如果高位为9,则高位不再进位,不进行插入操作,报溢出错误
                                        set @i=0                       
                                  else set @cur_char1=char(ascii(@cur_char1)+1)
                                end--5

                               if(@i=1)                       
                                 begin--7
           set @order_max=@cur_char1+@cur_char2 --将新得到的品牌序号赋给order_max
                                    update WG_GGSXGF_NEW set pp=pp+@order_max+@pro_value5+';'  --插入新品牌
                                 end--7
                              else  print(' 序号已满,溢出!!!')

                       end--3
                end--2
        end--1

--属性6的处理过程
    if(patindex('%品牌%',@pro_name6)<>0)  --如果属性6的名称中有“品牌”字样
        begin--1
               set @pro_value6=ltrim(@pro_value6)
           if(@pro_value6<>null and @pro_value6<>'') --如果属性6的值非空,则进入品牌修改块
                begin--2

                    if(@pro_pp=null or @pro_pp='')              --如果品牌字段为空,则新增一个品牌
                       update WG_GGSXGF_NEW set pp='01'+@pro_value6+';' where DM=@pro_dm   ----6

                    else if(patindex('%'+@pro_value6+'%',@pro_pp)=0)  --否则如果品牌字段中没有当前属性6的值
                       begin--3
                           
                             set @cur_pp =substring(@pro_pp,1,len(@pro_pp)-1)  --将当前品牌字段中的字符串减去末尾的分号,赋给新变量
                      
                             while (patindex('%;%',@cur_pp)<>0)  --将新变量串按分号进行分割,以找到最后一个分号后面的子串
                                  begin--4
                                     set @cur_pp=substring(@cur_pp,patindex('%;%',@cur_pp)+1,len(@cur_pp))
                                  end--4
                          
                              set @cur_char1=substring(@cur_pp,1,1)  --将分割后的子串第一位赋予字符变量1,为品牌序号的高位
                              set @cur_char2=substring(@cur_pp,2,1)  --将分割后的子串第二位赋予字符变量2,为品牌序号的低位
                             
                              set @cur_char2=char(ascii(@cur_char2)+1) --低位加1 
     set @i=1     

     if(ascii(@cur_char2)=58)  --如果低位加1之后为0,则高位要进位
                                begin--5
                                  set @cur_char2='0'
                                  if(@cur_char1='9')      --如果高位为9,则高位不再进位,不进行插入操作,报溢出错误
                                        set @i=0                       
                                  else set @cur_char1=char(ascii(@cur_char1)+1)
                                end--5

                               if(@i=1)                       
                                 begin--7
           set @order_max=@cur_char1+@cur_char2 --将新得到的品牌序号赋给order_max
                                    update WG_GGSXGF_NEW set pp=pp+@order_max+@pro_value6+';'  --插入新品牌
                                 end--7
                              else  print(' 序号已满,溢出!!!')

                       end--3
                end--2
        end--1

--属性7的处理过程
    if(patindex('%品牌%',@pro_name7)<>0)  --如果属性7的名称中有“品牌”字样
        begin--1
               set @pro_value7=ltrim(@pro_value7)
           if(@pro_value7<>null and @pro_value7<>'') --如果属性7的值非空,则进入品牌修改块
                begin--2

                    if(@pro_pp=null or @pro_pp='')              --如果品牌字段为空,则新增一个品牌
                       update WG_GGSXGF_NEW set pp='01'+@pro_value7+';' where DM=@pro_dm   ----7

                    else if(patindex('%'+@pro_value7+'%',@pro_pp)=0)  --否则如果品牌字段中没有当前属性7的值
                       begin--3
                           
                             set @cur_pp =substring(@pro_pp,1,len(@pro_pp)-1)  --将当前品牌字段中的字符串减去末尾的分号,赋给新变量
                      
                             while (patindex('%;%',@cur_pp)<>0)  --将新变量串按分号进行分割,以找到最后一个分号后面的子串
                                  begin--4
                                     set @cur_pp=substring(@cur_pp,patindex('%;%',@cur_pp)+1,len(@cur_pp))
                                  end--4
                          
                              set @cur_char1=substring(@cur_pp,1,1)  --将分割后的子串第一位赋予字符变量1,为品牌序号的高位
                              set @cur_char2=substring(@cur_pp,2,1)  --将分割后的子串第二位赋予字符变量2,为品牌序号的低位
                             
                              set @cur_char2=char(ascii(@cur_char2)+1) --低位加1 
     set @i=1     

     if(ascii(@cur_char2)=58)  --如果低位加1之后为0,则高位要进位
                                begin--5
                                  set @cur_char2='0'
                                  if(@cur_char1='9')      --如果高位为9,则高位不再进位,不进行插入操作,报溢出错误
                                        set @i=0                       
                                  else set @cur_char1=char(ascii(@cur_char1)+1)
                                end--5

                               if(@i=1)                       
                                 begin--7
           set @order_max=@cur_char1+@cur_char2 --将新得到的品牌序号赋给order_max
                                    update WG_GGSXGF_NEW set pp=pp+@order_max+@pro_value7+';'  --插入新品牌
                                 end--7
                              else  print(' 序号已满,溢出!!!')

                       end--3
                end--2
        end--1

--属性8的处理过程
    if(patindex('%品牌%',@pro_name8)<>0)  --如果属性8的名称中有“品牌”字样
        begin--1
               set @pro_value8=ltrim(@pro_value8)
           if(@pro_value8<>null and @pro_value8<>'') --如果属性8的值非空,则进入品牌修改块
                begin--2

                    if(@pro_pp=null or @pro_pp='')              --如果品牌字段为空,则新增一个品牌
                       update WG_GGSXGF_NEW set pp='01'+@pro_value8+';' where DM=@pro_dm   ----8

                    else if(patindex('%'+@pro_value6+'%',@pro_pp)=0)  --否则如果品牌字段中没有当前属性6的值
                       begin--3
                           
                             set @cur_pp =substring(@pro_pp,1,len(@pro_pp)-1)  --将当前品牌字段中的字符串减去末尾的分号,赋给新变量
                      
                             while (patindex('%;%',@cur_pp)<>0)  --将新变量串按分号进行分割,以找到最后一个分号后面的子串
                                  begin--4
                                     set @cur_pp=substring(@cur_pp,patindex('%;%',@cur_pp)+1,len(@cur_pp))
                                  end--4
                          
                              set @cur_char1=substring(@cur_pp,1,1)  --将分割后的子串第一位赋予字符变量1,为品牌序号的高位
                              set @cur_char2=substring(@cur_pp,2,1)  --将分割后的子串第二位赋予字符变量2,为品牌序号的低位
                             
                              set @cur_char2=char(ascii(@cur_char2)+1) --低位加1 
     set @i=1     

     if(ascii(@cur_char2)=58)  --如果低位加1之后为0,则高位要进位
                                begin--5
                                  set @cur_char2='0'
                                  if(@cur_char1='9')      --如果高位为9,则高位不再进位,不进行插入操作,报溢出错误
                                        set @i=0                       
                                  else set @cur_char1=char(ascii(@cur_char1)+1)
                                end--5

                               if(@i=1)                       
                                 begin--7
           set @order_max=@cur_char1+@cur_char2 --将新得到的品牌序号赋给order_max
                                    update WG_GGSXGF_NEW set pp=pp+@order_max+@pro_value8+';'  --插入新品牌
                                 end--7
                              else  print(' 序号已满,溢出!!!')

                       end--3
                end--2
        end--1

FETCH NEXT FROM outer_cursor
INTO  @pro_dm, 

  @pro_name1 ,
  @pro_name2 ,
  @pro_name3 ,
  @pro_name4,
  @pro_name5 ,
  @pro_name6,
  @pro_name7 ,
  @pro_name8 ,

  @pro_value1 ,
  @pro_value2 ,
  @pro_value3,
  @pro_value4,
  @pro_value5,
  @pro_value6 ,
  @pro_value7 ,
  @pro_value8,
 
  @pro_pp

END

CLOSE outer_cursor
DEALLOCATE outer_cursor
GO