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);
}
}
分享到:
相关推荐
通过理解`start with`、`connect by prior`和`order siblings by`的用法,我们可以有效地展示和操作层次数据。不过,实际应用时要注意性能优化,避免因递归深度过大而导致的问题,并考虑在模板渲染时的替代方案。
在"connectby.sql"文件中,可能包含了使用`CONNECT BY`创建组织结构、展示家族树或者分析数据依赖关系的例子。基本语法如下: ```sql SELECT column_list FROM table_name START WITH condition CONNECT BY prior ...
CONNECT BY PRIOR rid = rowid; ``` 5. 使用外部脚本:对于大数据量的处理,可以考虑将数据导出到外部环境(如Python或Java),在那里进行字符串连接,然后再导入回Oracle。 在实际应用中,应根据数据量、性能...
例如,`SELECT * FROM table START WITH condition CONNECT BY PRIOR id = parent_id ORDER SIBLINGS BY level`,这条查询将返回满足条件的记录,并按照它们的层次级别排序。 "查询位数补进"可能指的是使用`LPAD`或...
- PRIOR用于指定父节点的列名,例如:`CONNECT BY PRIOR id = parent_id`。 **节点和分支的裁剪:** - 通过`LEVEL`来限制递归的深度。 **使用LEVEL:** - 控制递归的层次,如:`SELECT ... CONNECT BY PRIOR id = ...
- 在Oracle和HANA中,都可以使用`START WITH...CONNECT BY PRIOR`来执行递归查询,以构建树形结构的数据集。例如,查询具有父子关系的部门结构。两者在语法上基本一致,但HANA不支持Oracle中的`level`和`siblings`...
当表中的数据只有一行时,可以利用`CONNECT BY`和正则表达式函数`REGEXP_SUBSTR`来完成拆分。例如: ```sql SELECT REGEXP_SUBSTR('444.555.666', '[^.]+', 1, level) AS col FROM dual CONNECT BY level ('444...
CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。 注意: 对于普通用户:授予connect, resource权限。 对于DBA管理用户:授予connect,resource, dba权限。 授予系统...
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 ...
第一部分 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...
CONNECT BY PRIOR`子句直接支持递归查询,而SQL Server 2005及以上版本则利用公共表表达式(CTE)的递归调用来实现。POSTgreSQL同样支持CTE子查询进行递归。这些数据库允许在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 ...
CONNECT BY PRIOR EmployeeID = ManagerID; ``` ### 六、DECODE 函数和行列互换 **DECODE**:用于进行条件判断,类似于IF-THEN-ELSE语句。 **示例**: 假设有一个表 `Scores` 包含学生的分数,要将其转换为等级:...