这篇文章距离最后更新已过96 天,如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
多语言表扩展字段字段操作
多语言表字段数据读取
if(OBJECT_ID('fn_CombineDisplayName') is not null)
drop function fn_CombineDisplayName
go
CREATE FUNCTION fn_CombineDisplayName
(
@CombineName nvarchar(max), -- 多语言表的CombineName
@Num int -- 第几个扩展字段,私有扩展段+50
)
RETURNS nvarchar(max)
AS
BEGIN
declare @Result nvarchar(max)=''
declare @sep varchar(6),@sepLen int,@indexS int
set @sep='#@#'
set @sepLen=Len(@sep)
set @indexS=CHARINDEX(@sep, @CombineName)
if(@Num=1)
begin
set @Result = substring(@CombineName, 1, @indexS - 1)
end
else
begin
declare @i int
set @i=2
while(@i<@Num)
begin
set @indexS=CHARINDEX(@sep, @CombineName, @indexS + @sepLen)
set @i+=1
end
set @indexS = @indexS + @sepLen
set @Result = substring(@CombineName, @indexS, CHARINDEX(@sep, @CombineName, @indexS) - @indexS)
end
return @Result
END
GO
示例
declare @str nvarchar(max)='裁板#@#电建地产-云立方#@#研发类#@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@#1231314#@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@##@#'
select dbo.fn_CombineDisplayName(@str, 3)
实体多语言表扩展字段写入
-- 实体多语言表扩展字段写入
CREATE OR ALTER PROCEDURE [dbo].[Pro_WriteEntityCombineName]
@Entity AS BIGINT, -- 实体ID
@EntityTable AS NVARCHAR(255), -- 实体数据库表名
@Value AS NVARCHAR(255), -- 待写入的值
@Index AS INT, -- 字段位置
@Code AS NVARCHAR(255) = '' -- 值的编码(如果有)
WITH ENCRYPTION
AS
BEGIN
-- 创建参数临时表
SELECT
@Entity AS ID,
@Code AS Code,
@Value AS Name,
'zh-CN' AS SysMLFlag
INTO #LJH_CombineNameTable
-- 写入多语言表扩展字段
EXEC dbo.P_Samuel_CombineNameUpdate @EntityTable,'#LJH_CombineNameTable',@Index -- 公共段:1~50,私有段:51~80
-- 删除参数临时表
DROP TABLE #LJH_CombineNameTable
END
GO
系统标准功能SQL
-- 同步所有段组合名称
exec dbo.P_BatchSyncFieldCombineName 'UFIDA.U9.CBO.SCM.Item.ItemMaster','adminxdp(adminxdp)';
-- 同步当前段组合名称,Global和Public
exec dbo.P_SyncFieldCombineNameNew 'UFIDA.U9.MO.MO.MOPickList','Global',12,'demo(demo)','1002410310000397','101';