如果表中存放的数据是树形结构,当知道某一个节点的值时,同时想取得它所有子节点的数据。
表结构:
表中存放的是部门组织结构, BMN_CD部门,SSK_KAISO_LV是阶层,BMN_MKJ部门名称,JOI_KAISO_LV上位阶层,JOI_BMN_CD上位部门。
检索SQL :
WITH Moduals (BMN_CD, SSK_KAISO_LV, BMN_MKJ, BMN_NM_RYKS, SKI_FLG, JOI_KAISO_LV, JOI_BMN_CD) AS (SELECT
T130A.BMN_CD,
T130A.SSK_KAISO_LV,
T130A.BMN_MKJ,
TRIM(T130A.BMN_NM_RYKS) BMN_NM_RYKS,
T130A.SKI_FLG,
T130A.JOI_KAISO_LV,
T130A.JOI_BMN_CD
from
T130 T130A
WHERE
T130A.BMN_CD = 'B00011' AND
UNION ALL
SELECT
T130B.BMN_CD,
T130B.SSK_KAISO_LV,
T130B.BMN_MKJ,
TRIM(T130B.BMN_NM_RYKS) BMN_NM_RYKS,
T130B.SKI_FLG,
T130B.JOI_KAISO_LV,
T130B.JOI_BMN_CD
from
T130 T130B
INNER JOIN Moduals T130C
ON T130B.JOI_KAISO_LV = T130C.SSK_KAISO_LV
AND T130B.JOI_BMN_CD = T130C.BMN_CD
)
SELECT Moduals.BMN_CD,SSK_KAISO_LV, BMN_MKJ, BMN_NM_RYKS, SKI_FLG, JOI_KAISO_LV, JOI_BMN_CD from Moduals
【 WHERE ………… 】
如果对检索结果还有限制的话,可以加WHERE语句进行限制。。。。。。。。
检索结果:
所谓静态SQL指在PL/SQL块中使用的SQL语句在编译时是明确的,执行的是确定对象。而动态SQL是指在PL/SQL块编译时SQL语句是不确定的,如根据用户输入的参数的不同而执行不同的操作。编译程序对动态语句部分不进行处理,只是在程序运行时动态地创建语句、对语句进行语法分析并执行该语句。
Oracle中动态SQL ......
oracle中sql语句中select * from t_Test t where t.Id in(1,2,3......)/*数量不能大于1000个*/
解决方法 分割成多次in 然后再或上 如 select * from t_Test t where t.Id in(1,2,3......800) or t.Id in(801,802,803......1300)
在使用中最好能不使用其他条件来代替in
......