Swap two numbers in PL/SQL without using temp

In PL/SQL code groups of commands are arranged within a block. A block group related declarations or statements. In declare part, we declare variables and between begin and end part, we perform the operations.

Given two numbers num1 and num2 and the task is to swap the value of given numbers.

Examples:



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

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

Method 1 (Using Arithmetic Operators)
The idea is to get sum in one of the two given numbers. The numbers can then be swapped using the sum and subtraction from sum.

filter_none

edit
close

play_arrow

link
brightness_4
code

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 

chevron_right


Output:

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

Method 2 Multiplication and division can also be used for swapping.

filter_none

edit
close

play_arrow

link
brightness_4
code

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 

chevron_right


Output:

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


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.