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