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. Los campos obligatorios están marcados con *