SQL Server 实现业务单据与业务单据(上一版本)之间的数据差异

背景

       在公司的一个项目的开发有一个业务单据在一个状态后必需升级版本才可以修改数据,另需在当前版本上显示与上一版的数据(每一个字段的)差异,如果是用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

 

大家如还有其它方法,欢迎你发表!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值