ORACLE10g和11递归写法

WITH T(etl_job, dependency_job,the_level,path,top_manager) AS ( 
 SELECT etl_job, dependency_job,1 AS the_level,'->'etl_job,etl_job as top_manager 
 FROM etl_job_dependency
 WHERE etl_Job =upper('ddd_test_etl_250_000') and enable='1' 
 UNION ALL
 SELECT e.etl_job, e.dependency_job,1 + t.the_level ,t.path||'->'||e.etl_job ,top_manager
 FROM T inner join etl_job_dependency e   
 on  t.dependency_job = e.etl_job
)
SELECT * FROM T
select etl_job,DEPENDENCY_JOB from ETL_JOB_DEPENDENCY
start with etl_job = 'DDD_TEST_ETL_251_000' and enable='1'
connect by prior DEPENDENCY_JOB = ETL_JOB
ORDER BY etl_job


select etl_job,DEPENDENCY_JOB from ETL_JOB_DEPENDENCY
start with dependency_job = 'AAA_TEST_ETL_251_000' and enable='1'
connect by prior ETL_JOB = dependency_job
ORDER BY etl_job

猜你喜欢

转载自blog.csdn.net/zhbzhbzhbbaby/article/details/80901823