📜  在不使用 temp 的情况下交换 PL/SQL 中的两个数字

📅  最后修改于: 2022-05-13 01:55:35.749000             🧑  作者: Mango

在不使用 temp 的情况下交换 PL/SQL 中的两个数字

在 PL/SQL 代码中,命令组被安排在一个块中。块组相关的声明或语句。在声明部分,我们声明变量,在开始和结束部分之间,我们执行操作。

给定两个数字 num1 和 num2,任务是交换给定数字的值。

例子:

Input : num1  = 1000, num2 = 2000
Output : num1  = 2000, num2 = 1000

Input : num1  = 40, num2 = 20
Output : num1  = 20, num2 = 40

方法 1 (使用算术运算符)
这个想法是在两个给定数字之一中得到总和。然后可以使用 sum 和 sum 的减法来交换数字。

DECLARE 
    -- declare variable num1, num2  
    -- of datatype number 
    num1 NUMBER; 
    num2 NUMBER; 
BEGIN 
    num1 := 1000; 
  
    num2 := 2000; 
  
    -- print result before swapping 
    dbms_output.Put_line('Before'); 
  
    dbms_output.Put_line('num1 = ' 
                         || num1 
                         ||' num2 = ' 
                         || num2); 
  
    -- swapping of numbers num1 and num2 
    num1 := num1 + num2; 
  
    num2 := num1 - num2; 
  
    num1 := num1 - num2; 
  
    -- print result after swapping 
    dbms_output.Put_line('After'); 
  
    dbms_output.Put_line('num1 = ' 
                         || num1 
                         ||' num2 = ' 
                         || num2); 
END; 
-- Program End 

输出:

Before
num1 = 1000 num2 = 2000
After
num1 = 2000 num2 = 1000

方法2乘法和除法也可以用于交换。

DECLARE 
    -- declare variable num1, num2  
    -- of datatype number 
    num1 NUMBER; 
    num2 NUMBER; 
BEGIN 
    num1 := 1000; 
  
    num2 := 2000; 
  
    -- print result before swapping 
    dbms_output.Put_line('Before'); 
  
    dbms_output.Put_line('num1 = ' 
                         || num1 
                         ||' num2 = ' 
                         || num2); 
  
    -- swapping of numbers num1 and num2 
    num1 := num1 * num2; -- num1 now becomes 15 (1111) 
  
    num2 := num1 / num2; -- num2 becomes 10 (1010) 
  
    num1 := num1 / num2; -- num1 becomes 5 (0101) 
    -- print result after swapping 
    dbms_output.Put_line('After'); 
  
    dbms_output.Put_line('num1 = ' 
                         || num1 
                         ||' num2 = ' 
                         || num2); 
END; 
  
-- Program End 

输出:

Before
num1 = 1000 num2 = 2000
After
num1 = 2000 num2 = 1000