IF EXISTS (SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID('[dbo].[sys_check_tables]') AND type = 'P')
DROP PROCEDURE [dbo].[sys_check_tables]
GO
 
CREATE procedure [dbo].[sys_check_tables](@cmpid int)
as
begin
-- 首先纠正biz 
-- 看看有没有新项 主表
declare c1 cursor LOCAL FORWARD_ONLY READ_ONLY for
select distinct biz_id  from mps_biztype  where biz_cmpid=@cmpid 
open c1
declare @ord2tag2 int 
declare @ord2tag22 int
declare @tbname varchar(50)
declare @dbname varchar(50)
declare @fkey   varchar(50) 
FETCH NEXT FROM c1 INTO @ord2tag2 
WHILE (@@FETCH_STATUS = 0)
BEGIN
exec sys_sql_getTableNamePk @cmpid,'biz',@ord2tag2,0,@tbname output,@fkey output ,@dbname output 
insert into mps_fieldinfo(fldi_cmpid,fldi_tbtype,fldi_tbid,fldi_ord2tag,fldi_database,fldi_tbname,fldi_fieldname,fldi_fieldcaption,fldi_system,fldi_datatype,
fldi_ident,fldi_size,fldi_decimal,fldi_default,fldi_hidden,fldi_key,fldi_index)
select @cmpid ,fldi_tbtype,@ord2tag2,0,@dbname,@dbname+@tbname,fldi_fieldname,fldi_fieldcaption,fldi_system,fldi_datatype,
fldi_ident,fldi_size,fldi_decimal,fldi_default,fldi_hidden,fldi_key,fldi_index
from   ebs_kernel..pub_fieldinfo_standard b
where b.fldi_ord2tag=1 and b.fldi_tbtype='biz' and   
(not exists (select 1 from mps_fieldinfo a 
where a.fldi_tbtype=b.fldi_tbtype and a.fldi_cmpid=@cmpid and a.fldi_fieldname=b.fldi_fieldname
  and b.fldi_ord2tag=1 and a.fldi_ord2tag=0 and a.fldi_tbid=@ord2tag2 
  )) 

update  a set a.fldi_updated=0  ,
a.fldi_decimal=b.fldi_decimal ,
a.fldi_datatype=b.fldi_datatype ,
a.fldi_default=b.fldi_default ,
a.fldi_size=b.fldi_size , 
a.fldi_changed = 0  
from ebs_kernel..pub_fieldinfo_standard b , mps_fieldinfo a 
where a.fldi_cmpid=@cmpid and a.fldi_tbid=@ord2tag2 and a.fldi_ord2tag=0 and a.fldi_tbtype='biz' and 
b.fldi_ord2tag=1 and b.fldi_tbtype='biz' and 
a.fldi_fieldname=b.fldi_fieldname and 
(a.fldi_decimal<>b.fldi_decimal or a.fldi_datatype<>b.fldi_datatype or a.fldi_default<>b.fldi_default or a.fldi_size<>b.fldi_size) 

-- -1 扩展表
insert into mps_fieldinfo(fldi_cmpid,fldi_tbtype,fldi_tbid,fldi_ord2tag,fldi_database,fldi_tbname,fldi_fieldname,fldi_fieldcaption,fldi_system,fldi_datatype,
fldi_ident,fldi_size,fldi_decimal,fldi_default,fldi_hidden,fldi_key,fldi_index)
select @cmpid ,fldi_tbtype,@ord2tag2,-1,@dbname,@dbname+@tbname+'_0',fldi_fieldname,fldi_fieldcaption,fldi_system,fldi_datatype,
fldi_ident,fldi_size,fldi_decimal,fldi_default,fldi_hidden,fldi_key,fldi_index
from   ebs_kernel..pub_fieldinfo_standard b
where b.fldi_ord2tag=-1 and b.fldi_tbtype='biz' and  
(not exists (select 1 from mps_fieldinfo a 
where a.fldi_tbtype=b.fldi_tbtype and a.fldi_cmpid=@cmpid and a.fldi_fieldname=b.fldi_fieldname
  and b.fldi_ord2tag=-1 and a.fldi_ord2tag=-1 and a.fldi_tbid=@ord2tag2 
  )) 

-- -2 users
insert into mps_fieldinfo(fldi_cmpid,fldi_tbtype,fldi_tbid,fldi_ord2tag,fldi_database,fldi_tbname,fldi_fieldname,fldi_fieldcaption,fldi_system,fldi_datatype,
fldi_ident,fldi_size,fldi_decimal,fldi_default,fldi_hidden,fldi_key,fldi_index)
select @cmpid ,fldi_tbtype,@ord2tag2,-2,@dbname,@dbname+@tbname+'_users',fldi_fieldname,fldi_fieldcaption,fldi_system,fldi_datatype,
fldi_ident,fldi_size,fldi_decimal,fldi_default,fldi_hidden,fldi_key,fldi_index
from  ebs_kernel..pub_fieldinfo_standard b
where b.fldi_ord2tag=-2 and b.fldi_tbtype='biz' and  
(not exists (select 1 from mps_fieldinfo a 
where a.fldi_tbtype=b.fldi_tbtype and a.fldi_cmpid=@cmpid and a.fldi_fieldname=b.fldi_fieldname
  and b.fldi_ord2tag=-2 and a.fldi_ord2tag=-2 and a.fldi_tbid=@ord2tag2 
  )) 
  
-- -3 relation
insert into mps_fieldinfo(fldi_cmpid,fldi_tbtype,fldi_tbid,fldi_ord2tag,fldi_database,fldi_tbname,fldi_fieldname,fldi_fieldcaption,fldi_system,fldi_datatype,
fldi_ident,fldi_size,fldi_decimal,fldi_default,fldi_hidden,fldi_key,fldi_index)
select @cmpid ,fldi_tbtype,@ord2tag2,-3,@dbname,@dbname+@tbname+'_relation',fldi_fieldname,fldi_fieldcaption,fldi_system,fldi_datatype,
fldi_ident,fldi_size,fldi_decimal,fldi_default,fldi_hidden,fldi_key,fldi_index
from   ebs_kernel..pub_fieldinfo_standard b
where b.fldi_ord2tag=-3 and b.fldi_tbtype='biz' and  
(not exists (select 1 from mps_fieldinfo a 
where a.fldi_tbtype=b.fldi_tbtype and a.fldi_cmpid=@cmpid and a.fldi_fieldname=b.fldi_fieldname
  and b.fldi_ord2tag=-3 and a.fldi_ord2tag=-3 and a.fldi_tbid=@ord2tag2 
  )) 

declare c11 cursor LOCAL FORWARD_ONLY READ_ONLY for
select distinct biz2_tag  from mps_biztype2  where biz2_bizid=@ord2tag2 
open c11  
FETCH NEXT FROM c11 INTO @ord2tag22 
WHILE (@@FETCH_STATUS = 0)
BEGIN
insert into mps_fieldinfo(fldi_cmpid,fldi_tbtype,fldi_tbid,fldi_ord2tag,fldi_database,fldi_tbname,fldi_fieldname,fldi_fieldcaption,fldi_system,fldi_datatype,
fldi_ident,fldi_size,fldi_decimal,fldi_default,fldi_hidden,fldi_key,fldi_index)
select @cmpid ,fldi_tbtype,@ord2tag2,@ord2tag22,@dbname,@dbname+@tbname+'_'+LTRIM(rtrim(str(@ord2tag22))),fldi_fieldname,fldi_fieldcaption,fldi_system,fldi_datatype,
fldi_ident,fldi_size,fldi_decimal,fldi_default,fldi_hidden,fldi_key,fldi_index
from  ebs_kernel..pub_fieldinfo_standard b
where b.fldi_ord2tag=0 and b.fldi_tbtype='biz' and  
(not exists (select 1 from mps_fieldinfo a 
where a.fldi_tbtype=b.fldi_tbtype and a.fldi_cmpid=@cmpid and a.fldi_fieldname=b.fldi_fieldname
  and b.fldi_ord2tag=0 and a.fldi_ord2tag=@ord2tag22 and a.fldi_tbid=@ord2tag2  
  )) 

update  a set a.fldi_updated=0  ,
a.fldi_decimal=b.fldi_decimal ,
a.fldi_datatype=b.fldi_datatype ,
a.fldi_default=b.fldi_default ,
a.fldi_size=b.fldi_size
from ebs_kernel..pub_fieldinfo_standard b , mps_fieldinfo a 
where a.fldi_cmpid=@cmpid and a.fldi_tbid=@ord2tag2 and a.fldi_ord2tag=@ord2tag22 and a.fldi_tbtype='biz' and 
b.fldi_ord2tag=0 and b.fldi_tbtype='biz' and 
a.fldi_fieldname=b.fldi_fieldname and 
(a.fldi_decimal<>b.fldi_decimal or a.fldi_datatype<>b.fldi_datatype or a.fldi_default<>b.fldi_default or a.fldi_size<>b.fldi_size)
FETCH NEXT FROM c11 INTO @ord2tag22 
END
CLOSE c11
DEALLOCATE c11 
FETCH NEXT FROM c1 INTO @ord2tag2 
END
CLOSE c1
DEALLOCATE c1 

declare @tag int 
-- 客户表
declare c1 cursor LOCAL FORWARD_ONLY READ_ONLY for
select distinct ct_id,ct_tag  from mps_csttype  where ct_cmpid=@cmpid 
open c1
FETCH NEXT FROM c1 INTO @ord2tag2 , @tag 
WHILE (@@FETCH_STATUS = 0)
BEGIN
exec sys_sql_getTableNamePk @cmpid,'cst',@ord2tag2,0,@tbname output,@fkey output ,@dbname output 
insert into mps_fieldinfo(fldi_cmpid,fldi_tbtype,fldi_tbid,fldi_ord2tag,fldi_database,fldi_tbname,fldi_fieldname,fldi_fieldcaption,fldi_system,fldi_datatype,
fldi_ident,fldi_size,fldi_decimal,fldi_default,fldi_hidden,fldi_key,fldi_index)
select @cmpid ,fldi_tbtype,@tag,0,@dbname,@dbname+@tbname,fldi_fieldname,fldi_fieldcaption,fldi_system,fldi_datatype,
fldi_ident,fldi_size,fldi_decimal,fldi_default,fldi_hidden,fldi_key,fldi_index
from   ebs_kernel..pub_fieldinfo_standard b
where b.fldi_ord2tag=1 and b.fldi_tbtype='cst' and   
(not exists (select 1 from mps_fieldinfo a 
where a.fldi_tbtype=b.fldi_tbtype and a.fldi_cmpid=@cmpid and a.fldi_fieldname=b.fldi_fieldname
  and b.fldi_ord2tag=1 and a.fldi_ord2tag=0 and a.fldi_tbid=@tag 
  )) 

update  a set a.fldi_updated=0  ,
a.fldi_decimal=b.fldi_decimal ,
a.fldi_datatype=b.fldi_datatype ,
a.fldi_default=b.fldi_default ,
a.fldi_size=b.fldi_size ,
a.fldi_changed = 0 
from ebs_kernel..pub_fieldinfo_standard b , mps_fieldinfo a 
where a.fldi_cmpid=@cmpid and a.fldi_tbid=@tag and a.fldi_ord2tag=0 and a.fldi_tbtype='cst' and 
b.fldi_ord2tag=1 and b.fldi_tbtype='cst' and 
a.fldi_fieldname=b.fldi_fieldname and 
(a.fldi_decimal<>b.fldi_decimal or a.fldi_datatype<>b.fldi_datatype or a.fldi_default<>b.fldi_default or a.fldi_size<>b.fldi_size) 

-- -1 扩展表
insert into mps_fieldinfo(fldi_cmpid,fldi_tbtype,fldi_tbid,fldi_ord2tag,fldi_database,fldi_tbname,fldi_fieldname,fldi_fieldcaption,fldi_system,fldi_datatype,
fldi_ident,fldi_size,fldi_decimal,fldi_default,fldi_hidden,fldi_key,fldi_index)
select @cmpid ,fldi_tbtype,@tag,-1,@dbname,@dbname+@tbname+'_0',fldi_fieldname,fldi_fieldcaption,fldi_system,fldi_datatype,
fldi_ident,fldi_size,fldi_decimal,fldi_default,fldi_hidden,fldi_key,fldi_index
from   ebs_kernel..pub_fieldinfo_standard b
where b.fldi_ord2tag=-1 and b.fldi_tbtype='cst' and  
(not exists (select 1 from mps_fieldinfo a 
where a.fldi_tbtype=b.fldi_tbtype and a.fldi_cmpid=@cmpid and a.fldi_fieldname=b.fldi_fieldname
  and b.fldi_ord2tag=-1 and a.fldi_ord2tag=-1 and a.fldi_tbid=@tag  
  )) 

-- -2 users
insert into mps_fieldinfo(fldi_cmpid,fldi_tbtype,fldi_tbid,fldi_ord2tag,fldi_database,fldi_tbname,fldi_fieldname,fldi_fieldcaption,fldi_system,fldi_datatype,
fldi_ident,fldi_size,fldi_decimal,fldi_default,fldi_hidden,fldi_key,fldi_index)
select @cmpid ,fldi_tbtype,@tag,-2,@dbname,@dbname+@tbname+'_users',fldi_fieldname,fldi_fieldcaption,fldi_system,fldi_datatype,
fldi_ident,fldi_size,fldi_decimal,fldi_default,fldi_hidden,fldi_key,fldi_index
from   ebs_kernel..pub_fieldinfo_standard b
where b.fldi_ord2tag=-2 and b.fldi_tbtype='cst' and 
(not exists (select 1 from mps_fieldinfo a  
where a.fldi_tbtype=b.fldi_tbtype and a.fldi_cmpid=@cmpid and a.fldi_fieldname=b.fldi_fieldname
  and b.fldi_ord2tag=-2 and a.fldi_ord2tag=-2 and a.fldi_tbid=@tag 
  )) 
  
 

declare c11 cursor LOCAL FORWARD_ONLY READ_ONLY for
select distinct ct2_tag  from mps_csttype2  where ct2_ctid=@ord2tag2 
open c11  
FETCH NEXT FROM c11 INTO @ord2tag22 
WHILE (@@FETCH_STATUS = 0)
BEGIN
insert into mps_fieldinfo(fldi_cmpid,fldi_tbtype,fldi_tbid,fldi_ord2tag,fldi_database,fldi_tbname,fldi_fieldname,fldi_fieldcaption,fldi_system,fldi_datatype,
fldi_ident,fldi_size,fldi_decimal,fldi_default,fldi_hidden,fldi_key,fldi_index)
select @cmpid ,fldi_tbtype,@tag,@ord2tag22,@dbname,@dbname+@tbname+'_'+LTRIM(rtrim(str(@ord2tag22))),fldi_fieldname,fldi_fieldcaption,fldi_system,fldi_datatype,
fldi_ident,fldi_size,fldi_decimal,fldi_default,fldi_hidden,fldi_key,fldi_index
from  ebs_kernel..pub_fieldinfo_standard b
where b.fldi_ord2tag=0 and b.fldi_tbtype='cst' and  
(not exists (select 1 from mps_fieldinfo a 
where a.fldi_tbtype=b.fldi_tbtype and a.fldi_cmpid=@cmpid and a.fldi_fieldname=b.fldi_fieldname
  and b.fldi_ord2tag=0 and a.fldi_ord2tag=@ord2tag22 and a.fldi_tbid=@tag  
  )) 

update  a set a.fldi_updated=0  ,
a.fldi_decimal=b.fldi_decimal ,
a.fldi_datatype=b.fldi_datatype ,
a.fldi_default=b.fldi_default ,
a.fldi_size=b.fldi_size ,
a.fldi_changed = 0 
from ebs_kernel..pub_fieldinfo_standard b , mps_fieldinfo a 
where a.fldi_cmpid=@cmpid and a.fldi_tbid=@tag and a.fldi_ord2tag=@ord2tag22 and a.fldi_tbtype='cst' and 
b.fldi_ord2tag=0 and b.fldi_tbtype='cst' and 
a.fldi_fieldname=b.fldi_fieldname and 
(a.fldi_decimal<>b.fldi_decimal or a.fldi_datatype<>b.fldi_datatype or a.fldi_default<>b.fldi_default or a.fldi_size<>b.fldi_size)
FETCH NEXT FROM c11 INTO @ord2tag22 
END
CLOSE c11
DEALLOCATE c11 
FETCH NEXT FROM c1 INTO @ord2tag2 , @tag 
END
CLOSE c1
DEALLOCATE c1 
end