На самом деле, вы также можете поменять местами два числа без временного числа, используя Алгоритм обмена XOR (но у вас все равно будет 3 команды):
declare
no1 number(3):=31;
no2 number(3):=34;
begin
dbms_output.put_line('Before swap');
dbms_output.put_line('No1 : '||no1||' No2 : '||no2 );
n1 := (n1 + n2) - bitand(n1,n2) * 2;
n2 := (n2 + n1) - bitand(n2,n1) * 2;
n1 := (n1 + n2) - bitand(n1,n2) * 2;
dbms_output.put_line('After swap');
dbms_output.put_line('No1 : '||no1||' No2 : '||no2 );
end;
Относительно того, как сделать битовый xor в plsql, см. здесь
ИМХО, в реальных программах следует избегать однострочников, писать их забавно, но поддерживать их чертовски ...