3,491
社区成员
发帖
与我相关
我的任务
分享
--测试
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
;
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 = a ^ b;
b = a ^ b;
a = a ^ b;
a := a + b;
b := a - b;
a := a - b;
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