Intercambia dos números en PL/SQL sin usar temp

En el código PL/SQL, los grupos de comandos se organizan dentro de un bloque. Un grupo de bloques relacionado con declaraciones o sentencias. En declare part, declaramos variables y entre start y end part, realizamos las operaciones.

Dados dos números num1 y num2 y la tarea es intercambiar el valor de los números dados.

Ejemplos:

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

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

Método 1 (usando operadores aritméticos)
La idea es obtener la suma en uno de los dos números dados. Luego, los números se pueden intercambiar usando la suma y la resta de la suma.

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 

Producción:

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

Método 2 La multiplicación y la división también se pueden usar para intercambiar.

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 

Producción:

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

Publicación traducida automáticamente

Artículo escrito por vt_m y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *