如题,thx

解决方案 »

  1.   

    select * from v$sessions 可以不?
      

  2.   

    select * from v$transactionselect * from v$session
      

  3.   

    谢谢。我写好了,请帮我看看是否正确。
    select * from v$transaction t inner join v$session s on t.ses_addr = s.saddr and s.audsid = userenv('SESSIONID')
      

  4.   

    select count(*) from sys.v_$transaction t where t.SES_ADDR=(select b.SADDR  from v$session b where b.AUDSID=userenv('sessionid'));
    如果大于0就是有session在处理中.
    不要在on条件里写 字段=常数的条件,会被忽略.因为on后面是用来写表间关联关系的,对单表的限定要么写子查询做为关联用的表,要么在where条件里加上该条件,以便对join后的数据进行筛选.
      

  5.   

    SQL> select * from emp;
     
             A
    ----------
             1
             2
             4
     
    SQL> select * from emp2;
     
             A
    ----------
             3
     
    SQL> select a.a aa,b.a ba from emp a left join emp2 b on a.a=1 and a.a=b.a;
     
            AA         BA
    ---------- ----------
             1 
             2 
             4 
     
    SQL> select a.a aa,b.a ba from emp a left join emp2 b on  a.a=b.a;
     
            AA         BA
    ---------- ----------
             1 
             4 
             2 
     
    SQL> select a.a aa,b.a ba from (select * from emp where a=1) a left join emp2 b on  a.a=b.a;
     
            AA         BA
    ---------- ----------
             1 
     
    SQL> select a.a aa,b.a ba from emp a left join emp2 b on a.a=1 and a.a=b.a where a.a=1;
     
            AA         BA
    ---------- ----------
             1 
     
    SQL> 
      

  6.   

    学习了,不知道ORACLE会忽略该条件。这跟其它数据库库有点不同。
      

  7.   

    有点误人子弟了.那个确切的说不是被忽略了.left join的特性就是左表里的数据能不能匹配到其他表数据都显示,on里面a.a=1对于a.a<>1的列肯定为假,即使a.a=b.a,b表中的数据也无法匹配.
    见谅.