在不使用 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