Parámetros de salida y entrada en PL/SQL

Hola a todos, hoy os voy a explicar como funcionan los parámetros de salida y entrada en PL/SQL.

Ya que hemos visto las funciones y procedimientos, te dejo aquí el manual donde lo vemos:

Funciones en PL/SQL

Procedimientos en PL/SQL

En PL/SQL, los parámetros pueden ser de entrada o salida, vamos a explicar como se utilizan ambos:

  • Entrada (IN): los parámetros de entrada son lo que debemos darles un valor al llamar la función o procedimiento, sino se indica en el parámetro, por defecto, será un parámetro de entrada.

create or replace function suma(num1 IN number, num2 IN number)
return Number
as
  v_total number := 0;
begin
  
    v_total := num1 + num2;
    return v_total;

end;
/

declare
    v_num1 number(8) := 5;
    v_num2 number(8) := 10;
    v_total number(8) := 0;
begin
  v_total := suma(v_num1, v_num2);
  DBMS_OUTPUT.PUT_LINE('El total es ' || v_total);
  
end;
/

  • Salida (OUT): los parámetros de salida lo que hacen es que que cuando termina la función o procedimiento, el valor que tiene esa variable, la mantiene fuera de la función o procedimiento. Se puede utilizar para guardar varios valores a la vez, por ejemplo, o si en un procedimiento necesitamos guardar algo como si fuera una función.

create or replace procedure suma(num1 IN number, num2 IN number, v_total OUT number)
as
begin
  
    v_total := num1 + num2;

end;
/

declare
    v_num1 number(8) := 5;
    v_num2 number(8) := 10;
    v_total number(8) := 0;
begin
    suma(v_num1, v_num2, v_total);
    DBMS_OUTPUT.PUT_LINE('El total es ' || v_total);
  
end;
/

Te dejo un video del canal por aquí:

  • Entrada y salida (IN OUT): Es la combinación de ambas tipos parámetros.

create or replace procedure alCubo(numero IN OUT number)
as
begin
  
    numero := numero * numero;

end;
/

declare
    v_num1 number(8) := 5;
begin
    alCubo(v_num1);
    DBMS_OUTPUT.PUT_LINE('El total es ' || v_num1);
  
end;
/

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada.