单据对应的表--通过存储过程得到单据所有表

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

单据对应的表--通过存储过程得到单据所有表

1、执行存储过程,得到销售订单所有对应表,如图

image.webp

2、存储过程

if(OBJECT_ID('Proc_GetTableName') is not null)
begin
	drop proc Proc_GetTableName
end
go
--创建存储过程
Create Procedure Proc_GetTableName
(
   @FormId varchar(100)
)
as
begin
	--表名变量
    Declare @FTbName varchar(100);
    --临时表
	Create table #TableNameTemp
	(
		FTbName nvarchar(100) ,
		FIndex int
	)
	if(@FormId is not null)
	begin
	    --直接找表名节点
		insert into #TableNameTemp(FTbName,FIndex)
		select Item.value('text()[1]','nvarchar(100)') tbName ,
		 ROW_NUMBER() OVER(ORDER BY Item) AS FIndex
		from 
		(select CAST(FKernelXML as XML) fxml  from T_META_OBJECTTYPE where FID=@FormId) tt
		cross apply tt.fxml.nodes('//TableName') as tb(Item)
		--查询所有的表名中的拆分表
		Declare @MaxIndex int =1;
		select @MaxIndex = MAX(FIndex) from #TableNameTemp
		while(@MaxIndex >0)
		begin
			select @FTbName = FTbName from #TableNameTemp where FIndex = @MaxIndex;
			insert into #TableNameTemp(FTbName,FIndex)
			select tbName,0 from (
				select @FTbName+'_'+ Item.value('text()[1]','nvarchar(100)') as tbName from 
				(select CAST(FKernelXML as XML) fxml  from T_META_OBJECTTYPE
				 where FID='SAL_SaleOrder')	tt 
				 cross apply tt.fxml.nodes('//SplitTables/SplitTable/Suffix') as tb(Item)) tb1
				where object_id(tb1.tbName) is not null;
			--下一次循环表索引	
			set @MaxIndex = @MaxIndex- 1;
		end
		--多选基础资料的表
		--一些特殊的表
	end
	select FTbName from #TableNameTemp
end



妙啊!~

【--多选基础资料的表 --一些特殊的表】,此存储过程也支持吗?

单据对应的表--通过存储过程得到单据所有表

1、执行存储过程,得到销售订单所有对应表,如图2、存储过程if(OBJECT_ID('Proc_GetTableName') is not null)begin drop proc Proc_GetTabl...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息