100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > oracle 树形结构表 树结构表递归查询在ORACLE和MSSQL中的实现方法

oracle 树形结构表 树结构表递归查询在ORACLE和MSSQL中的实现方法

时间:2021-02-19 02:40:11

相关推荐

oracle 树形结构表 树结构表递归查询在ORACLE和MSSQL中的实现方法

树结构表:记录树形数据的二维数据表,包含"本节点ID”和"父节点ID"

经常需要进行递归查询某个节点下的所有节点数据

以下是分别在ORACLE和MSSQL中的实现

如本例子中涉及的表

TB_SM_ORGAN(

ORG_ID int,

ORG_CODE varchar(20),

ORG_NAME varchar(40),

IS_INITDATA char(1),

ORG_PARENTID int,

ORG_TYPEID varchar(6),

ORG_AGENTID int,

ORG_STATUS char(3),

ORG_DESC varchar(200))

【ORACLE】

直接支持,使用SELECT * WHERE..... START WITH..... CONNECT BY 本节点ID=父节点ID

例如:

SELECT * FROM TB_SM_ORGAN where Org_Status = 'S0A' START WITH ORG_ID= @OrgId CONNECT BY PRIOR ORG_ID = ORG_PARENTID order by ORG_CODE

【MSSQL】

没有增强型SQL实现,需要使用临时表和循环多次查询的方式实现

create function GetOrganSubTreeByOrganID (@id int)

returns @t table(

ORG_ID int,

ORG_CODE varchar(20),

ORG_NAME varchar(40),

IS_INITDATA char(1),

ORG_PARENTID int,

ORG_TYPEID varchar(6),

ORG_AGENTID int,

ORG_STATUS char(3),

ORG_DESC varchar(200))

as

begin

insert @t select * from TB_SM_ORGAN where org_id = @id

while @@rowcount > 0

insert @t select a.* from TB_SM_ORGAN as a inner join @t as b

on _parentid = _id and _id not in(select org_id from @t)

return

end

使用方法

SELECT * FROM GetOrganSubTreeByOrganID (ID);

出处: /sunnyflat/articles/1173239.html

来自 “ ITPUB博客 ” ,链接:/16436858/viewspace-594979/,如需转载,请注明出处,否则将追究法律责任。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。