在数据库中,
如 a =1,b =2
在不调用第三方参数的情况下
用什么方法实现 a ,b  值的互换?

解决方案 »

  1.   

    那没办法,怎么样都要一个临时变量,这与是不是pl/sql没有关系。
      

  2.   


    declare
     a number := 123;
     b number := 435;
    begin
     dbms_output.put_line('交换前');
     dbms_output.put_line('a = ' || a);
     dbms_output.put_line('b = ' || b);
     a := a + b;
     b := a - b;
     a := a - b; 
     dbms_output.put_line('交换后');
     dbms_output.put_line('a = ' || a);
     dbms_output.put_line('b = ' || b);
    end;交换前
    a = 123
    b = 435
    交换后
    a = 435
    b = 123
      

  3.   


    a := a + b;
    b := a - b;
    a := a - b;
      

  4.   

    C++经常这样干a = a ^ b;
    b = a ^ b;
    a = a ^ b;
      

  5.   

    来个Oracle位运算declare   
     a number := 123;   
     b number := 435;   
    begin   
     dbms_output.put_line('交换前');   
     dbms_output.put_line('a = ' || a);   
     dbms_output.put_line('b = ' || b);   
     a := to_number(UTL_RAW.BIT_XOR(to_char(a), to_char(b)));   
     b := to_number(UTL_RAW.BIT_XOR(to_char(a), to_char(b)));   
     a := to_number(UTL_RAW.BIT_XOR(to_char(a), to_char(b)));   
     /*  
     a := a + b;  
     b := a - b;  
     a := a - b;   
     */  
     dbms_output.put_line('交换后');   
     dbms_output.put_line('a = ' || a);   
     dbms_output.put_line('b = ' || b);   
    end;  结果:-------------------------交换前
    a = 123
    b = 435
    交换后
    a = 435
    b = 123-------------------------
      

  6.   


    --测试
    select decode(1,(select 1 from dual),2) from dual;
    create table table1 
    (
    a int,
    b int)
    ;
    insert into table1
      select 9, 10
        from dual
      union all
      select 3, 4
        from dual
      union all
      select 5, 6
        from dual
      union all
      select 7, 8
        from dual
      union all
      select 9, 10 from dual;
    commit;--自己闹着玩
    select decode(a, (select a from table1 t1 where t1.a = t.a), b) as a,
           decode(b, (select b from table1 t1 where t1.b = t.b), a) as b
      from table1 t
      ;--乱写,哈哈  
    select b as a, a as b from table1
    ;
    自己胡写了一点,其实我不知道楼主要的是那种转换.
      

  7.   

    用这个 最简洁 三个update
      

  8.   

    记得之前java有这样一道面试题:关于两个值的互换!