树结构表:记录树形数据的二维数据表,包含"本节点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 a.org_parentid = b.org_id and a.org_id not in(select org_id from @t)
   return
end
使用方法

SELECT * FROM GetOrganSubTreeByOrganID (ID);

出处: http://www.cnblogs.com/sunnyflat/articles/1173239.html

转载于:https://www.cnblogs.com/feinian/archive/2009/04/30/1446804.html

[转]树结构表递归查询在ORACLE和MSSQL中的实现方法相关推荐

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

    树结构表:记录树形数据的二维数据表,包含"本节点ID"和"父节点ID" 经常需要进行递归查询某个节点下的所有节点数据 以下是分别在ORACLE和MSSQL中的实 ...

  2. oracle返回表id,在Oracle的函数中,返回表类型的语句

    Oracle的function中怎么返回表变量? 太晚了,过多的理论知识就不说了,下面简单地说实现吧!.. 1.创建表对象类型. 在Oracle中想要返回表对象,必须自定义一个表类型,如下所示: 复制 ...

  3. oracle 删除表存过,oracle删除数据库中已存在表的实例代码

    摘要 腾兴网为您分享:oracle删除数据库中已存在表的实例代码,长沙银行,银万财富,图钉,听中国等软件知识,以及土豆app,局域网文件,宝宝学动物,观海听涛bbs,育碧,生男生女预测大师,新先视,信 ...

  4. MySql、Oracle、MSSQL中的字符串的拼接

    字符串的拼接 1,Mysql 在Java.C#等编程语言中字符串的拼接可以通过加号"+"来实现,比如:"1"+"3"."a&quo ...

  5. oracle查询所有表的中文名,Oracle 查询库中所有表名、字段名、字段名说明,查询表的数据条数、表名、中文表名、...

    查询所有表名: select t.table_name from user_tables t; 查询所有字段名: select t.column_name from user_col_comments ...

  6. jq post 表单提交文件_Power Query 中使用POST方法进行网络抓取的尝试

    之前我写过很多篇的Power Query的网络抓取的教程,如果按照网络数据传递的方式来说,那些文章中的抓取方式都是GET方法的抓取,那么POST与GET方法有什么区别呢? 这是W3C官网上的内容,大家 ...

  7. sql如何遍历几百万的表_SQl SERVER 2000 遍历表中数据的方法

    方法一:使用游标 declare @ProductName nvarchar(50) declare pcurr cursor for select ProductName from Products ...

  8. Oracle递归查询,Oracle START WITH……CONNECT BY查询

    Oracle递归查询,Oracle START WITH--CONNECT BY查询,Oracle树查询 ================================ ©Copyright 蕃薯耀 ...

  9. mysql如何植入到oracle_分享MSSQL、MySql、Oracle的大数据批量导入方法及编程手法细节...

    1:MSSQL SQL语法篇: BULK INSERT [ database_name . [ schema_name ] . | schema_name . ] [ table_name | vie ...

最新文章

  1. 常用几种激活函数的总结
  2. 算法(第4版)Algorithms, Fourth Edition
  3. Eclipse不自动编译 设置后重新编译仍然没有编译
  4. vue 2.6 插槽v-slot用法记录
  5. JDK源码(14)-Error、Exception
  6. 【报告分享】数据资产化之路----数据资产的估值与行业实践.pdf
  7. Java常量设计与常量池
  8. c#chart背景透明_C#+Layui开发后台管理系统
  9. 如何做好招生讲座-----转载 (四)
  10. Java- String类概述
  11. [转载] 七龙珠第一部——第012话 向神龙许愿
  12. 盲源分离与振动信号处理之间发展关系
  13. SYSLINUX中文介绍
  14. win10升级助手链接
  15. 微信小程序中实现地图导航
  16. 一文告诉你哪些map element类型支持就地更新
  17. 大数据必学Java基础(六十一):同步类容器对比应用
  18. 用Discuz 搭建个人论坛
  19. matlab运行LCT跟踪算法代码
  20. 在南方读研和在北方读研有多大差异?

热门文章

  1. 鹅厂又赢了!游戏不再是玩家的资产,我们只有“使用权”不能交易
  2. 我的Go+语言初体验——go【Format】goplus
  3. Postman(使用指南)
  4. Tensorflow-相关API-交叉熵
  5. Vue利用Vue.extend()实现自定义弹出框
  6. 判断一个点是否在三角形内
  7. 根据实践经验,讲述些学习Java web能少走的弯路,内容摘自java web轻量级开发面试教程...
  8. codis 部署和测试
  9. [Objective-c 基础 - 2.4] 多态
  10. int string java 呼转