实现自动建表的功能1


Alter procedure createbom        
@billno varchar(30),@sprc varchar(300),@mcode varchar(30)
as        
declare @db varchar(300),@firstpart varchar(20),@firstzm varchar(20),@firstnum varchar(20),@firstnum_up varchar(20),@firstup varchar(20),        
@secondpart varchar(20),@secondnum_up varchar(20),@final_up varchar(20),@secondpartnum varchar(20),@minuse int,@A numeric(4,2),@B numeric(4,2),        
@E numeric(4,2),@F numeric(4,2),@S numeric(4,2),@thirdpart varchar(20),@thirdpart_s varchar(20),@thirdpartnum varchar(30),@fourthpart varchar(20),@part_a varchar(20),        
@fivepart varchar(20),@part_B varchar(20),@part_F varchar(20),@part_E varchar(20),@part_S varchar(20),@i int,@number varchar(30),@nodeup varchar(30),@bomupdate varchar(30),@bomtypeno varchar(30)        
declare @fourpart1 varchar(20),@fourpart1_up varchar(20),@fourpart1_up_num varchar(20),@fivepart1 varchar(20),@fivepart1_up varchar(20),@fivepart1_up_num varchar(20),@sixpart1 varchar(20),@sixpart1_up varchar(20),@sixpart1_up_num varchar(20),        
  @sevenpart1 varchar(20),@sevenpart1_up varchar(20),@sevenpart1_up_num varchar(20),@eightpart1 varchar(20),@eightpart1_up varchar(20),@eightpart1_up_num varchar(20),        
  @ninepart1 varchar(20),@ninepart1_up varchar(20),@ninepart1_up_num varchar(20),@tenpart1 varchar(20),@tenpart1_up varchar(20),@tenpart1_up_num varchar(20),        
  @elvpart1 varchar(20),@elvpart1_up varchar(20),@elvpart1_up_num varchar(20),@tlepart1 varchar(20),@tlepart1_up varchar(20),@tlepart1_up_num varchar(20),        
  @threetenpart1 varchar(20),@threetenpart1_up varchar(20),@threetenpart1_up_num varchar(20)        
declare @onebomup varchar(30),@twobomup varchar(30),@threebomup varchar(30),@fourbomup varchar(30),@fivebomup varchar(30)        
declare @one varchar(30),@two varchar(30),@three varchar(30),@four varchar(30),@five varchar(30),@isqz varchar(15),@isjg varchar(15),@isfj varchar(30),@wherefj int,@where_bom_num int,@where_sprc_num int,@zxqty int,@gdxdsl int,@qzxdsl varchar(20),@wc int,         @typeno varchar(20)
declare @M int,@N int
declare @j varchar(30)
declare @typestr varchar(300),@astr varchar(300)
----------------------------------------------------        
if exists(select * from tempdb..sysobjects where id=object_id('tempdb..##createbom2'))         
begin         
 drop table ##createbom2        
end        
----------------------------------------------------- 
---------------------------------------------------------------------------------------------------------
set @i=1    
        --先取得类别    
       set @typestr=@sprc set @astr=''                     
     while @i<=3                                                                      
     begin       
              if  charindex('-',@typestr)>0    
               begin    
                        if @astr='' 
                        set @astr=left(@typestr,charindex('-',@typestr)-1)    
                        else    
                        set @astr=@astr+'-'+left(@typestr,charindex('-',@typestr)-1)               
                         set @typestr=right(@typestr,len(@typestr)-charindex('-',@typestr))--截断已检索字符    
                end    
                else     
                 begin     
                            if @astr='' 
                            set @astr=@typestr     
                            else                                                            
                            set @astr=@astr+'-'+@typestr 
                            set @typestr=''     
                  end     
                  --如果找到就终止,否则就继续    
                  if exists(select * from pd_autocreatebom with(nolock) where @astr=sprccode)    
                      set @i=4                      
                      else    
                      set @i=@i+1                                           
     end            
          --  print 'a_'+  @typestr     
----------------------------------------------------------------------------------------------------------       
set @i=''        
--set @sprc=1        
--select @sprc        
--set @sprc=(select sprc from ##needbom where billno=@billno and autoid=@autoid)               --SAD01-D6-L20-E...-F...-M...        
--set @mcode=(select mcode from ##needbom where billno=@billno and autoid=@autoid)        
--select @sprc        
--第一级        
set @db=left(@sprc,3)                                     --SAD        
set @firstpart=left(@sprc,charindex('-',@sprc)-1)          --SAD01        
set @firstnum=right(@firstpart,2)                        --01                   
set @secondpart=substring(@sprc,7,len(@sprc)-6)     -- D6-L20-...-...  D...   
--第二级        
if charindex('-',@secondpart)<>''        
begin        
set @secondnum_up=substring(@secondpart,1,charindex('-',@secondpart)-1)  --D6        
set @secondpartnum=substring(@secondnum_up,2,len(@secondnum_up)-1)      --6                
set @thirdpart=substring(@secondpart,charindex('-',@secondpart)+1,len(@secondpart)-charindex('-',@secondpart))  -- L20-...-... 或者-- L20        
end        
else        
begin        
  set @i=''        
  set @i=2        
end        
--业务id:99215
--第三级         
if charindex('-',@thirdpart)<>''  -- L20-...                      
BEGIN         
 set @thirdpart_s=substring(@thirdpart,1,charindex('-',@thirdpart)-1)              -- L20 
 set @thirdpartnum=substring(@thirdpart_s,2,len(@thirdpart_s)-1)                 -- 20        
 set @fourpart1=substring(@thirdpart,charindex('-',@thirdpart)+1,len(@thirdpart)-charindex('-',@thirdpart))   --E...-F...-M...  或者E..       
end        
else   -- L20             
begin        
set @i=''  
 --set @thirdpartnum=substring(@thirdpart_s,2,len(@thirdpart_s)-1)   --20        
 set @i=3        
end        
--第四级        
if @i=''        
begin        
if charindex('-',@fourpart1)<>''       --E...-F...-M...          
begin        
 set @fourpart1_up=substring(@fourpart1,1,charindex('-',@fourpart1)-1)  --E...        
 set @fourpart1_up_num=substring(@fourpart1_up,2,len(@fourpart1_up)-1)        --...        
 set @fivepart1=substring(@fourpart1,charindex('-',@fourpart1)+1,len(@fourpart1)-charindex('-',@fourpart1))   --F...-M...  或者F..        
end        
else   -- E...             
begin        
 set @i=''          
 --set @fourpart1_up_num=substring(@fourpart1,2,len(@fourpart1)-1)   --E的数字        
 set @i=4        
end        
end        
--第五级        
if @i=''        
begin        
if charindex('-',@fivepart1)<>''      --F...-M...  或者F..        
begin        
 set @fivepart1_up=substring(@fivepart1,1,charindex('-',@fivepart1)-1)  --F...        
 set @fivepart1_up_num =substring(@fivepart1_up,2,len(@fivepart1_up)-1)        --F的数字      
 set @sixpart1=substring(@fivepart1,charindex('-',@fivepart1)+1,len(@fivepart1)-charindex('-',@fivepart1))   --F...-M...  或者F..        
end        
else   -- F...             
begin        
 set @i=''          
 --set @fivepart1_up_num=substring(@fivepart1,2,len(@fivepart1)-1)   --F的数字        
 set @i=5        
end        
end        
--第六级        
if @i=''        
begin        
if charindex('-',@sixpart1)<>''              
begin        
 set @sixpart1_up=substring(@sixpart1,1,charindex('-',@sixpart1)-1)          
 set @sixpart1_up_num =substring(@sixpart1_up,2,len(@sixpart1_up)-1)               
 set @sevenpart1=substring(@sixpart1,charindex('-',@sixpart1)+1,len(@sixpart1)-charindex('-',@sixpart1))          
end        
else   -- F...             
begin        
 set @i=''          
 --set @sixpart1_up_num=substring(@sixpart1,2,len(@sixpart1)-1)           
 set @i=6        
end        
end        
--第七级        
if @i=''        
begin        
if charindex('-',@sevenpart1)<>''              
begin        
 set @sevenpart1_up=substring(@sevenpart1,1,charindex('-',@sevenpart1)-1)          
 set @sevenpart1_up_num =substring(@sevenpart1_up,2,len(@sevenpart1_up)-1)               
 set @eightpart1=substring(@sevenpart1,charindex('-',@sevenpart1)+1,len(@sevenpart1)-charindex('-',@sevenpart1))           
end 
else   -- F...            
begin        
 set @i=''          
 --set @sevenpart1_up_num=substring(@sevenpart1,2,len(@sevenpart1)-1)           
 set @i=7        
end        
end        
--第八级        
if @i=''        
begin        
if charindex('-',@eightpart1)<>''              
begin        
 set @eightpart1_up=substring(@eightpart1,1,charindex('-',@eightpart1)-1)          
 set @eightpart1_up_num =substring(@eightpart1_up,2,len(@eightpart1_up)-1)               
 set @ninepart1=substring(@eightpart1,charindex('-',@eightpart1)+1,len(@eightpart1)-charindex('-',@eightpart1))           
end        
else   -- F...             
begin        
 set @i=''          
 --set @eightpart1_up_num=substring(@eightpart1,2,len(@eightpart1)-1) 
 set @i=8        
end        
end        
--第九级        
if @i=''        
begin        
if charindex('-',@ninepart1)<>''              
begin        
 set @ninepart1_up=substring(@ninepart1,1,charindex('-',@ninepart1)-1)          
 set @ninepart1_up_num =substring(@ninepart1_up,2,len(@ninepart1_up)-1)               
 set @tenpart1=substring(@ninepart1,charindex('-',@ninepart1)+1,len(@ninepart1)-charindex('-',@ninepart1))           
end        
else   -- F...             
begin       
set @i=''          
 --set @ninepart1_up_num=substring(@ninepart1,2,len(@ninepart1)-1)           
 set @i=9        
end        
end        
--第十级        
if @i=''        
begin        
if charindex('-',@tenpart1)<>''              
begin        
 set @tenpart1_up=substring(@tenpart1,1,charindex('-',@tenpart1)-1)          
 set @tenpart1_up_num =substring(@tenpart1_up,2,len(@tenpart1_up)-1)               
 set @elvpart1=substring(@tenpart1,charindex('-',@tenpart1)+1,len(@tenpart1)-charindex('-',@tenpart1))           
end        
else   -- F...             
begin        
 set @i=''        
 --set @tenpart1_up_num=substring(@tenpart1,2,len(@tenpart1)-1)           
 set @i=10        
end        
end        
--业务id:99215
--第十一级        
if @i=''        
begin        
if charindex('-',@elvpart1)<>''              
begin        
 set @elvpart1_up=substring(@elvpart1,1,charindex('-',@elvpart1)-1)          
 set @elvpart1_up_num =substring(@elvpart1_up,2,len(@elvpart1_up)-1)               
 set @tlepart1=substring(@elvpart1,charindex('-',@elvpart1)+1,len(@elvpart1)-charindex('-',@elvpart1))           
end        
else   -- F...             
begin        
 set @i=''          
 --set @elvpart1_up_num=substring(@elvpart1,2,len(@elvpart1)-1)           
 set @i=11        
end        
end        
--第十二级        
if @i=''        
begin        
if charindex('-',@tlepart1)<>''              
begin        
 set @tlepart1_up=substring(@tlepart1,1,charindex('-',@tlepart1)-1)          
 set @tlepart1_up_num =substring(@tlepart1_up,2,len(@tlepart1_up)-1)               
 set @threetenpart1=substring(@tlepart1,charindex('-',@tlepart1)+1,len(@tlepart1)-charindex('-',@tlepart1))           
end        
else   -- F...             
begin        
 set @i=''          
 --set @tlepart1_up_num=substring(@tlepart1,2,len(@tlepart1)-1)           
 set @i=12        
end        
end        

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值