背景
在公司的一个项目的开发有一个业务单据在一个状态后必需升级版本才可以修改数据,另需在当前版本上显示与上一版的数据(每一个字段的)差异,如果是用SQL语写死的话那以后新加一个表(或字段)都要去修改对应的SQL,有没有可参数化可配置的方法呢?
实现
实现方法主要是利用了SQL SERVER Josn功能,所以必需是SQL SERVER 2016+
记得刚了解Sql Server JSON 时候,可以将其转为行记录如下:
declare @str nvarchar(1000)='{"SampSerial":"3U8S9TFM","SampNo":"7ERX1WIH","SampVer":34719,"DesiVer":44243,"DocType":"RKUJIT7G"}'
select [key],[value] from openjson(@str)
key value
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SampSerial 3U8S9TFM
SampNo 7ERX1WIH
SampVer 34719
DesiVer 44243
DocType
如果key是字段名我们可以很方便对比每列的值,下面我们看实例
1.创建一个函数,方便转为行记录
create function [dbo].[fu_read](@str nvarchar(max))
returns table
as
return(
select *
from openjson(SUBSTRING(@str,2,len(@str)-2))
)
2.实例代码
drop table if exists #test
drop table if exists #old
drop table if exists #new
select docno='A',ver=1,ctype='a',qty=8 into #test union all
select docno='A',ver=2,ctype='b',qty=10
SELECT docno,[OldVal]=(select ctype,qty from #test b where a.docno=b.docno and a.ver=b.ver for JSON path)
into #old
FROM #test a
where docno='A' and ver=1
SELECT docno,[NewVal]=(select ctype,qty from #test b where a.docno=b.docno and a.ver=b.ver for JSON path)
into #new
FROM #test a
where docno='A' and ver=2
;
with old as(
select a.docno,[key],[value]
from #old a
cross apply dbo.fu_read(a.[OldVal]) b
),new as(
select a.docno,[key],[value]
from #new a
cross apply dbo.fu_read(a.[NewVal]) b
)
select a.docno,a.[key],oldval=a.[value],newval=b.[value]
from old a
inner join new b on a.docno=b.docno and a.[key]=b.[key]
where a.[value]<>b.[value]
如果想要可参数化可配置,改为动态SQL(1.表联取条件,2.转为JOSN字段列),下面是整个开发中的实例
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create function [dbo].[fu_read](@str nvarchar(max))
returns table
as
return(
select *
from openjson(SUBSTRING(@str,2,len(@str)-2))
)
GO
/****** Object: Table [dbo].[PdCompareH] Script Date: 2018-12-14 11:06:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[PdCompareH](
[Id] [uniqueidentifier] NOT NULL,
[AccId] [smallint] NOT NULL,
[CompareId] [int] NOT NULL,
[CompareTab] [varchar](100) NOT NULL,
[CompareDesc] [nvarchar](200) NOT NULL,
[OrgTab] [varchar](100) NULL,
[IsShow1] [bit] NOT NULL,
[IsShow2] [bit] NOT NULL,
[IsShow3] [bit] NOT NULL,
[IsShow4] [bit] NOT NULL,
[IsShow5] [bit] NOT NULL,
[IsShow6] [bit] NOT NULL,
[IsShow7] [bit] NOT NULL,
[IsShow8] [bit] NOT NULL,
[OrderId] [int] NULL,
[Remark] [nvarchar](500) NULL,
[Creator] [nvarchar](50) NULL,
[CreatorCode] [varchar](50) NULL,
[CreateDate] [datetime] NULL,
[Updater] [nvarchar](50) NULL,
[UpdaterCode] [varchar](50) NULL,
[UpdateDate] [datetime] NULL,
[IsDelete] [tinyint] NOT NULL,
[OperDept] [nvarchar](20) NULL,
[RoCode] [varchar](50) NULL,
CONSTRAINT [PK_PdCompareH] PRIMARY KEY CLUSTERED
(
[CompareId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[PdCompareS] Script Date: 2018-12-14 11:06:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[PdCompareS](
[Id] [uniqueidentifier] NOT NULL,
[AccId] [smallint] NOT NULL,
[CompareId] [int] NOT NULL,
[ColCode] [varchar](50) NOT NULL,
[ColName] [nvarchar](100) NOT NULL,
[IsKey] [bit] NOT NULL,
[IsCompare] [bit] NOT NULL,
[IsShow1] [bit] NOT NULL,
[IsShow2] [bit] NOT NULL,
[IsShow3] [bit] NOT NULL,
[IsShow4] [bit] NOT NULL,
[IsShow5] [bit] NOT NULL,
[IsShow6] [bit] NOT NULL,
[IsShow7] [bit] NOT NULL,
[IsShow8] [bit] NOT NULL,
[Creator] [nvarchar](50) NULL,
[CreatorCode] [varchar](50) NULL,
[CreateDate] [datetime] NULL,
[Updater] [nvarchar](50) NULL,
[UpdaterCode] [varchar](50) NULL,
[UpdateDate] [datetime] NULL,
[IsDelete] [tinyint] NOT NULL,
[OperDept] [nvarchar](20) NULL,
[RoCode] [varchar](50) NULL,
CONSTRAINT [PK_PdCompareS] PRIMARY KEY CLUSTERED
(
[CompareId] ASC,
[ColCode] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[PdDiffDataH] Script Date: 2018-12-14 11:06:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[PdDiffDataH](
[AccId] [smallint] NOT NULL,
[SampSerial] [varchar](50) NOT NULL,
[SampSerialOrg] [varchar](50) NOT NULL,
CONSTRAINT [PK_PdDiffDataH] PRIMARY KEY CLUSTERED
(
[SampSerial] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[PdDiffDataS] Script Date: 2018-12-14 11:06:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[PdDiffDataS](
[AccId] [smallint] NOT NULL,
[SampSerial] [varchar](50) NOT NULL,
[CompareId] [int] NOT NULL,
[KeyVal] [varchar](100) NOT NULL,
[ColCode] [varchar](50) NOT NULL,
[NewVal] [nvarchar](max) NULL,
[OldVal] [nvarchar](max) NULL,
[DiffType] [smallint] NOT NULL,
[UpdaterCode] [varchar](50) NULL,
[UpdateDate] [datetime] NULL,
CONSTRAINT [PK_PdDiffDataS] PRIMARY KEY CLUSTERED
(
[SampSerial] ASC,
[CompareId] ASC,
[KeyVal] ASC,
[ColCode] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
/****** Object: Table [dbo].[PdSampleH] Script Date: 2018-12-14 11:06:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[PdSampleProductColor](
[Id] [uniqueidentifier] NOT NULL,
[AccId] [smallint] NOT NULL,
[SampSerial] [varchar](50) NOT NULL,
[SampGLine] [int] NOT NULL,
[AlterDesc] [nvarchar](500) NULL,
[WoolenColor] [nvarchar](100) NOT NULL,
[IsHead] [bit] NOT NULL,
[IsCancelColor] [bit] NOT NULL,
[IsApproved] [bit] NOT NULL,
[IsLightColour] [bit] NOT NULL,
[ColorCode] [varchar](50) NOT NULL,
[ColorName] [nvarchar](200) NOT NULL,
[Total] [int] NOT NULL,
[HeadQty] [int] NULL,
[ColorQty] [int] NULL,
[SingleQty] [int] NULL,
[FastQty] [int] NULL,
[Size1] [int] NULL,
[Size2] [int] NULL,
[Size3] [int] NULL,
[Size4] [int] NULL,
[Size5] [int] NULL,
[Size6] [int] NULL,
[Size7] [int] NULL,
[Size8] [int] NULL,
[Size9] [int] NULL,
[Size10] [int] NULL,
[Size11] [int] NULL,
[Size12] [int] NULL,
[Size13] [int] NULL,
[Size14] [int] NULL,
[Size15] [int] NULL,
[Size16] [int] NULL,
[Size17] [int] NULL,
[Size18] [int] NULL,
[Size19] [int] NULL,
[Size20] [int] NULL,
[Size21] [int] NULL,
[Size22] [int] NULL,
[Size23] [int] NULL,
[Size24] [int] NULL,
[Size25] [int] NULL,
[Size26] [int] NULL,
[Size27] [int] NULL,
[Size28] [int] NULL,
[Size29] [int] NULL,
[Size30] [int] NULL,
[Creator] [nvarchar](50) NULL,
[CreatorCode] [nvarchar](50) NULL,
[CreateDate] [datetime] NULL,
[Updater] [nvarchar](50) NULL,
[UpdaterCode] [nvarchar](50) NULL,
[UpdateDate] [datetime] NULL,
[IsDelete] [tinyint] NOT NULL,
[OperDept] [nvarchar](50) NULL,
[RoCode] [varchar](50) NULL,
CONSTRAINT [PK_PdSampleProductColor] PRIMARY KEY CLUSTERED
(
[SampSerial] ASC,
[SampGLine] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/***********************************************************************************************************************************************
功能:比较板单上版本数据差异
***********************************************************************************************************************************************/
CREATE proc [dbo].[up_PdSampleVerDiff](
@AccId smallint, --AccId
@CompareId int=1, --比较ID PdCompareH.CompareId
@SampSerial varchar(50), --板单流水号
@WhereStr nvarchar(max), --异动数据记录的WHERE条件
@User varchar(50), --更新人
@DateTime datetime, --更新时间
@Err nvarchar(2000) out --返回错误信息
)
as
/*
declare
@AccId smallint=1,
@CompareId int=2,
@SampSerial varchar(50)='MO1805020005',
@WhereStr nvarchar(max)=' SampSerial=''MO1805020005'' ',
@User varchar(50)='admin8',
@DateTime datetime=getdate(),
@Err nvarchar(2000)
--*/
declare @SampSerialOrg varchar(50),@StyleBigClass varchar(50)
/* 上版本的取法
设计板单(非套装):板单号+板类+版本
设计板单(套装):板单号+板类+版本+款号流水号
制作板单:板单号+板类+款号流水号+版本+其他描述
*/
select @SampSerialOrg=isnull(SampSerialOrg,'-') from PdDiffDataH(nolock) where SampSerial=@SampSerial
if @SampSerialOrg='-' return;
if ISNULL(@SampSerialOrg,'')='' begin
set @StyleBigClass=(select StyleBCode from PdSampleGoodsAttr where SampSerial=@SampSerial)
set @SampSerialOrg=(select top 1 a.SampSerial
from PdSampleH a(nolock)
inner join PdSampleH b(nolock) on a.SampNo=b.SampNo and a.SampCCode=b.SampCCode and a.AccId=b.AccId
and case when b.SampCCode in('MBT07') and @StyleBigClass<>'StyleBigClass_4' then '' else a.GoodsSerial end=case when b.SampCCode in('MBT07') and @StyleBigClass<>'StyleBigClass_4' then '' else b.GoodsSerial end
and case when b.SampCCode in('MBT07') then '' else isnull(a.OtherDesc,'') end=case when b.SampCCode in('MBT07') then '' else isnull(b.OtherDesc,'') end
where b.SampSerial=@SampSerial and a.SampVer<b.SampVer and a.IsDelete=0
order by a.SampVer desc)
insert into PdDiffDataH([AccId],[SampSerial],[SampSerialOrg])
values(@AccId,@SampSerial,isnull(@SampSerialOrg,'-'))
if ISNULL(@SampSerialOrg,'')='' return;
end
/***************************************************************************************************************************************************************/
declare @KeyList nvarchar(2000),@CompareList nvarchar(max),@CompareTab varchar(100)
declare @sql nvarchar(max)
select @KeyList=isnull(KeyList,''''''),@CompareList=CompareList,@CompareTab=CompareTab
from vwPdCompareH
where AccId=@AccId and CompareId=@CompareId
if @CompareTab is null begin
set @Err='未配置对比Id:'+CAST(@CompareId as nvarchar(10))+''
return;
end
--print @CompareList
if LTRIM(@WhereStr)>'' set @WhereStr=' and '+@WhereStr
set @sql='
drop table if exists #newdata
select SampSerial,'+@KeyList+' as KeyVal,IsDelete,'+@CompareList+'
into #newdata
from '+@CompareTab+' (nolock)
where SampSerial='''+@SampSerial+''' '+@WhereStr+'
drop table if exists #olddata;
select SampSerial,'+@KeyList+' as KeyVal,IsDelete,'+@CompareList+'
into #olddata
from '+@CompareTab+' (nolock)
where SampSerial='''+@SampSerialOrg+''' and '+@KeyList+' in (select '+@KeyList+' from #newdata)
begin try
--清除已存在的差差异数据
--delete PdDiffDataS where SampSerial=@SampSerial and CompareId=@CompareId and KeyVal in(select KeyVal from #newdata);
drop table if exists #tempPdDiffDataS
select top 0 [AccId],[SampSerial],[CompareId],[KeyVal],[ColCode],[NewVal],[OldVal],[DiffType]
into #tempPdDiffDataS
from PdDiffDataS
--新增
insert into #tempPdDiffDataS ([AccId],[SampSerial],[CompareId],[KeyVal],[ColCode],[NewVal],[OldVal],[DiffType])
select [AccId]=@AccId,[SampSerial],[CompareId]=@CompareId,[KeyVal],[ColCode]=''All''
,[NewVal]=(select '+@CompareList+' from #newdata a where a.KeyVal=#newdata.KeyVal for JSON path)
,[OldVal]=null,[DiffType]=1
from #newdata
where KeyVal not in(select KeyVal from #olddata where IsDelete=0) and IsDelete=0
--删除
insert into #tempPdDiffDataS ([AccId],[SampSerial],[CompareId],[KeyVal],[ColCode],[NewVal],[OldVal],[DiffType])
select [AccId]=@AccId,[SampSerial],[CompareId]=@CompareId,[KeyVal],[ColCode]=''All''
,[NewVal]=(select '+@CompareList+' from #newdata a where a.KeyVal=#newdata.KeyVal for JSON path)
,[OldVal]=null,[DiffType]=2
from #newdata
where KeyVal in(select KeyVal from #olddata where IsDelete=0) and IsDelete=1
--更新
;
with newdata as(
select a.[KeyVal],b.[Key],b.value
from (
select [KeyVal],Detail=(select '+@CompareList+' from #newdata where #newdata.[KeyVal]=a.[KeyVal] for JSON path,INCLUDE_NULL_VALUES)
from #newdata a
where isdelete=0 ) a
cross apply dbo.fu_read(a.detail) b
),olddata as(
select a.[KeyVal],b.[Key],b.value
from (
select [KeyVal],Detail=(select '+@CompareList+' from #olddata where #olddata.[KeyVal]=a.[KeyVal] for JSON path,INCLUDE_NULL_VALUES)
from #olddata a
where IsDelete=0) a
cross apply dbo.fu_read(a.detail) b
)
insert into #tempPdDiffDataS ([AccId],[SampSerial],[CompareId],[KeyVal],[ColCode],[NewVal],[OldVal],[DiffType])
select [AccId]=@AccId,[SampSerial]=@SampSerial,[CompareId]=@CompareId,[KeyVal]=n.[KeyVal],[ColCode]=n.[Key],[NewVal]=n.value,[OldVal]=o.value,[DiffType]=3
from newdata n
inner join olddata o on n.[KeyVal]=o.[KeyVal] and n.[Key]=o.[Key]
where isnull(n.value,'''')<>isnull(o.value,'''')
merge PdDiffDataS tg
using #tempPdDiffDataS su
on tg.SampSerial=su.SampSerial and tg.CompareId=su.CompareId and tg.KeyVal=su.KeyVal and tg.ColCode=su.ColCode
WHEN NOT MATCHED then
insert ([AccId],[SampSerial],[CompareId],[KeyVal],[ColCode],[NewVal],[OldVal],[DiffType],[UpdaterCode],[UpdateDate])
values (su.[AccId],su.[SampSerial],su.[CompareId],su.[KeyVal],su.[ColCode],su.[NewVal],su.[OldVal],su.[DiffType],@User,@DateTime)
WHEN MATCHED and su.[NewVal]<>tg.[NewVal] then
update set tg.[NewVal]=su.[NewVal],[UpdaterCode]=@User,[UpdateDate]=@DateTime;
;
--之前更新过,现在又更新回来
delete a
from PdDiffDataS a
left join #tempPdDiffDataS b on b.SampSerial=a.SampSerial and b.CompareId=a.CompareId and b.KeyVal=a.KeyVal and b.ColCode=a.ColCode
where a.SampSerial=@SampSerial and a.CompareId=@CompareId and a.KeyVal in(select KeyVal from #newdata where isdelete=0) and b.SampSerial is null;
end try
begin catch
set @Err=ERROR_MESSAGE()
end catch
'
--print @sql
exec sp_executesql @sql,N'@SampSerial varchar(50),@CompareId int,@AccId smallint,@User varchar(50),@DateTime datetime,@Err nvarchar(2000) out'
,@AccId=@AccId,@SampSerial=@SampSerial,@CompareId=@CompareId,@User=@User,@DateTime=@DateTime,@Err=@Err out
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Id' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'Id'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'AccId' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'AccId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'CompareId' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'CompareId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'CompareTab' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'CompareTab'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'CompareDesc' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'CompareDesc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'OrgTab' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'OrgTab'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'IsShow1' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'IsShow1'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'IsShow2' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'IsShow2'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'IsShow3' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'IsShow3'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'IsShow4' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'IsShow4'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'IsShow5' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'IsShow5'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'IsShow6' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'IsShow6'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'IsShow7' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'IsShow7'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'IsShow8' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'IsShow8'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'排序Id' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'OrderId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Remark' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'Remark'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'创建人' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'Creator'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'创建人编码' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'CreatorCode'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'创建日期' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'CreateDate'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'更新人' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'Updater'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'更新人编码' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'UpdaterCode'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'更新日期' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'UpdateDate'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'删除标记' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'IsDelete'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'操作部门' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'OperDept'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'角色编码' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH', @level2type=N'COLUMN',@level2name=N'RoCode'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'板单比较设置主表' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareH'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Id' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS', @level2type=N'COLUMN',@level2name=N'Id'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'AccId' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS', @level2type=N'COLUMN',@level2name=N'AccId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'CompareId' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS', @level2type=N'COLUMN',@level2name=N'CompareId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ColCode' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS', @level2type=N'COLUMN',@level2name=N'ColCode'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ColName' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS', @level2type=N'COLUMN',@level2name=N'ColName'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'IsKey' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS', @level2type=N'COLUMN',@level2name=N'IsKey'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'IsCompare' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS', @level2type=N'COLUMN',@level2name=N'IsCompare'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Show1' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS', @level2type=N'COLUMN',@level2name=N'IsShow1'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Show2' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS', @level2type=N'COLUMN',@level2name=N'IsShow2'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Show3' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS', @level2type=N'COLUMN',@level2name=N'IsShow3'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Show4' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS', @level2type=N'COLUMN',@level2name=N'IsShow4'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Show5' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS', @level2type=N'COLUMN',@level2name=N'IsShow5'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Show6' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS', @level2type=N'COLUMN',@level2name=N'IsShow6'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Show7' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS', @level2type=N'COLUMN',@level2name=N'IsShow7'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Show8' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS', @level2type=N'COLUMN',@level2name=N'IsShow8'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'创建人' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS', @level2type=N'COLUMN',@level2name=N'Creator'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'创建人编码' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS', @level2type=N'COLUMN',@level2name=N'CreatorCode'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'创建日期' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS', @level2type=N'COLUMN',@level2name=N'CreateDate'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'更新人' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS', @level2type=N'COLUMN',@level2name=N'Updater'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'更新人编码' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS', @level2type=N'COLUMN',@level2name=N'UpdaterCode'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'更新日期' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS', @level2type=N'COLUMN',@level2name=N'UpdateDate'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'删除标记' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS', @level2type=N'COLUMN',@level2name=N'IsDelete'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'操作部门' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS', @level2type=N'COLUMN',@level2name=N'OperDept'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'角色编码' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS', @level2type=N'COLUMN',@level2name=N'RoCode'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'板单比较设置子表' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdCompareS'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'AccId' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdDiffDataH', @level2type=N'COLUMN',@level2name=N'AccId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'板单流水号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdDiffDataH', @level2type=N'COLUMN',@level2name=N'SampSerial'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'原板单流水号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdDiffDataH', @level2type=N'COLUMN',@level2name=N'SampSerialOrg'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'板单差异主表' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdDiffDataH'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'AccId' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdDiffDataS', @level2type=N'COLUMN',@level2name=N'AccId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'板单流水号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdDiffDataS', @level2type=N'COLUMN',@level2name=N'SampSerial'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'CompareId' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdDiffDataS', @level2type=N'COLUMN',@level2name=N'CompareId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'主键值' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdDiffDataS', @level2type=N'COLUMN',@level2name=N'KeyVal'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ColCode' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdDiffDataS', @level2type=N'COLUMN',@level2name=N'ColCode'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'NewVal' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdDiffDataS', @level2type=N'COLUMN',@level2name=N'NewVal'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'OldVal' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdDiffDataS', @level2type=N'COLUMN',@level2name=N'OldVal'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'DiffType' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdDiffDataS', @level2type=N'COLUMN',@level2name=N'DiffType'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'更新人编码' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdDiffDataS', @level2type=N'COLUMN',@level2name=N'UpdaterCode'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'更新日期' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PdDiffDataS', @level2type=N'COLUMN',@level2name=N'UpdateDate'
GO
大家如还有其它方法,欢迎你发表!