`
weiruan85
  • 浏览: 385281 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

替代oracle connect by prior

阅读更多
Connection conn = null;
try
{
//select * from vfnd_3001@LINK_QD start with chn_id = '10000072' connect by prior parent_chn_id = chn_id


//
conn = DataSourceConfigUtil.getConnection();
StringBuilder sql = new StringBuilder();
sql.append("select ");
sql.append(" a.*,");
sql.append(" (select count(*) from lmss2_depot where district_id = ?) hasDepot ");
sql.append("from ");
sql.append(" vfnd_3001@LINK_QD a ");
sql.append("where ");
sql.append(" a.CHN_ID = ?");
PreparedStatement pstmt = conn.prepareStatement(sql.toString());

//ID()
while (channel.getParentChnId() != null && !channel.getParentChnId().trim().equals(""))
{
//--
log.info("SQL:" + sql);

pstmt.setString(1, channel.getParentChnId());
pstmt.setString(2, channel.getParentChnId());
//
ResultSet rs = pstmt.executeQuery();
if (rs.next())
{
channel = new Channel();
channel.setChnId(rs.getString("CHN_ID"));
channel.setChnName(rs.getString("CHN_NAME"));
channel.setChnNumber(rs.getString("CHN_NUMBER"));
channel.setClassType(rs.getString("CLASS_TYPE"));
channel.setClassCode(rs.getString("CLASS_CODE"));
channel.setRootDistance(rs.getInt("ROOT_DISTANCE"));
channel.setParentChnId(rs.getString("PARENT_CHN_ID"));
channel.setHasChild(rs.getString("HAS_CHILD").equals("Y") ? true : false);
channel.setHasDepot(rs.getInt("hasDepot") > 0 ? true : false);

//
retList.add(0, channel);
}
}
分享到:
评论

相关推荐

    Oracle递归SQL学习

    通过理解`start with`、`connect by prior`和`order siblings by`的用法,我们可以有效地展示和操作层次数据。不过,实际应用时要注意性能优化,避免因递归深度过大而导致的问题,并考虑在模板渲染时的替代方案。

    oracle常用函数.rar

    在"connectby.sql"文件中,可能包含了使用`CONNECT BY`创建组织结构、展示家族树或者分析数据依赖关系的例子。基本语法如下: ```sql SELECT column_list FROM table_name START WITH condition CONNECT BY prior ...

    解决Oracle没有WM_CONCAT函数.zip

    CONNECT BY PRIOR rid = rowid; ``` 5. 使用外部脚本:对于大数据量的处理,可以考虑将数据导出到外部环境(如Python或Java),在那里进行字符串连接,然后再导入回Oracle。 在实际应用中,应根据数据量、性能...

    oracle-use.rar_Oracle drop use_oracle

    例如,`SELECT * FROM table START WITH condition CONNECT BY PRIOR id = parent_id ORDER SIBLINGS BY level`,这条查询将返回满足条件的记录,并按照它们的层次级别排序。 "查询位数补进"可能指的是使用`LPAD`或...

    ORACLE 合辑

    - PRIOR用于指定父节点的列名,例如:`CONNECT BY PRIOR id = parent_id`。 **节点和分支的裁剪:** - 通过`LEVEL`来限制递归的深度。 **使用LEVEL:** - 控制递归的层次,如:`SELECT ... CONNECT BY PRIOR id = ...

    TN-HDB-0003-HANA SQL参考及Oracle对照-v0.6.docx

    - 在Oracle和HANA中,都可以使用`START WITH...CONNECT BY PRIOR`来执行递归查询,以构建树形结构的数据集。例如,查询具有父子关系的部门结构。两者在语法上基本一致,但HANA不支持Oracle中的`level`和`siblings`...

    Oracle数据行拆分多行方法示例

    当表中的数据只有一行时,可以利用`CONNECT BY`和正则表达式函数`REGEXP_SUBSTR`来完成拆分。例如: ```sql SELECT REGEXP_SUBSTR('444.555.666', '[^.]+', 1, level) AS col FROM dual CONNECT BY level ('444...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

     CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。 注意: 对于普通用户:授予connect, resource权限。 对于DBA管理用户:授予connect,resource, dba权限。  授予系统...

    Oracle事例

    connect by sjbm = prior bm 25、快照 create snapshot SNAPSHOT_NAME [storage (storage parameter)] [tablespace TABLESPACE_NAME] [refresh [fast\\complete\\force] [start with START_DATE next NEXT...

    总结问题集合

    `Connect By Prior`是Oracle数据库中的一个特殊查询语句,用于检索具有层次结构的数据。它允许你定义节点之间的父/子关系,并按层次顺序检索结果。例如: ```sql SELECT * FROM TBL_TEST START WITH id = 10 ...

    Oracle8i_9i数据库基础

    第一部分 Oracle SQL*PLUS基础 23 第一章 Oracle数据库基础 23 §1.1 理解关系数据库系统(RDBMS) 23 §1.1.1 关系模型 23 §1.1.2 Codd十二法则 24 §1.2 关系数据库系统(RDBMS)的组成 24 §1.2.1 RDBMS 内核 24...

    一种MySQL数据库SQL递归查询的研究与实现.pdf

    CONNECT BY PRIOR`子句直接支持递归查询,而SQL Server 2005及以上版本则利用公共表表达式(CTE)的递归调用来实现。POSTgreSQL同样支持CTE子查询进行递归。这些数据库允许在SQL语句中直接对子查询进行递归调用,...

    SQL性能优化

    CONNECT BY PRIOR ID = parent_id AND STATEMENT_ID = user_define  示例 如要测试下面SQL: SELECT c.short, a.cday, a.card_no, a.qty FROM sales.stockiohis a, sales.product_info b, sales.vendor c WHERE ...

    高级SQL学习

    CONNECT BY PRIOR EmployeeID = ManagerID; ``` ### 六、DECODE 函数和行列互换 **DECODE**:用于进行条件判断,类似于IF-THEN-ELSE语句。 **示例**: 假设有一个表 `Scores` 包含学生的分数,要将其转换为等级:...

Global site tag (gtag.js) - Google Analytics