oracle 的 left/right join与(+)的一个区别
基本从来不用left/right join
一个项目被迫要用别人写的 sql
本打算改写一下,提高效率
发现:
【1】
select * from a
left outer join b on a.id= b.id AND ...1...
where ...2...
与
【2】
select * from a , b
where a.id= b.id(+)
AND ...1...
AND ...2...
的一个区别:【1】里的b相当于(select b.* where...1...)
相关文档:
表task,字段id_,name_
id_的数据如下形式:
1
1.1
1.1.1
1.1.1.2
1.2
1.2.1
...
10
10.1
10.1.1
10.2.1
10.2.1.1
10.2.1.1.1
10.2.1.1.2
.......
注:“.”标识父子的关系。
现在通过id_查询树结构的效果,并且知道此节点是否为叶子节点leaf。。?
语句如下:
select
......
Oracle的视图不支持参数
这里有一个另类的方法,不是很好,但是还是一种解决方案
通过package实现
create or replace package pkg_pv is
procedure set_pv(pv varchar2);
function get_pv return varchar2;
end;
create or replace package body pkg_pv is
v varchar2(20);
procedure set ......
select column_name from all_cons_columns cc
where owner='SSH' --SSH为用户名称,要注意大小写
and table_name='SYS_DEPT' --SYS_DEPT为表名,注意大小写
and exists (select 'x' from all_constraints c
where c.owner = cc.owner
and c.constraint_name = cc.constraint_name
and c.constraint_type ='P'
......