¿Qué son los Subprogramas en PL/SQL?
Los subprogramas en PL/SQL permiten organizar y reutilizar el código de manera modular. Existen dos tipos principales de subprogramas: procedimientos y funciones.
Procedimientos
Un procedimiento en PL/SQL es un bloque de código que realiza una serie de acciones, pero no devuelve ningún valor directamente al llamarlo. A continuación, te muestro cómo se define un procedimiento:
CREATE OR REPLACE PROCEDURE aumentar_salario(
p_empleado_id IN NUMBER,
p_incremento IN NUMBER
) IS
BEGIN
UPDATE empleados
SET salario = salario + p_incremento
WHERE empleado_id = p_empleado_id;
DBMS_OUTPUT.PUT_LINE('Salario actualizado.');
END;
En este ejemplo, el procedimiento aumentar_salario toma dos parámetros: p_empleado_id y p_incremento, y aumenta el salario del empleado correspondiente.
Funciones
Las funciones son similares a los procedimientos, pero tienen la capacidad de devolver un valor al código que las llama. Este valor puede ser de cualquier tipo de dato. A continuación, se muestra cómo se define una función en PL/SQL:
CREATE OR REPLACE FUNCTION obtener_salario(
p_empleado_id IN NUMBER
) RETURN NUMBER IS
v_salario empleados.salario%TYPE;
BEGIN
SELECT salario INTO v_salario
FROM empleados
WHERE empleado_id = p_empleado_id;
RETURN v_salario;
END;
En este caso, la función obtener_salario devuelve el salario del empleado cuyo empleado_id es pasado como parámetro.
Llamando a Subprogramas
Para invocar un procedimiento, simplemente utiliza una sentencia EXEC o dentro de otro bloque PL/SQL. Para llamar a una función, puedes hacerlo directamente en una sentencia SQL. Ejemplos:
-- Llamando al procedimiento
BEGIN
aumentar_salario(101, 500);
END;
-- Llamando a la función
DECLARE
v_salario NUMBER;
BEGIN
v_salario := obtener_salario(101);
DBMS_OUTPUT.PUT_LINE('El salario es: ' || v_salario);
END;
El procedimiento aumentar_salario se ejecuta actualizando el salario de un empleado, mientras que la función obtener_salario devuelve el salario y lo imprime.
Parámetros en Subprogramas
Los subprogramas en PL/SQL aceptan tres tipos de parámetros:
IN: El parámetro de entrada, se pasa al subprograma pero no se puede modificar.OUT: El parámetro de salida, que se devuelve modificado desde el subprograma.IN OUT: Un parámetro que se pasa al subprograma, se puede modificar, y se devuelve modificado.
Ejemplo con Parámetros de Tipo IN OUT
A continuación, un ejemplo que utiliza un parámetro IN OUT:
CREATE OR REPLACE PROCEDURE actualizar_salario(
p_empleado_id IN NUMBER,
p_nuevo_salario IN OUT NUMBER
) IS
BEGIN
UPDATE empleados
SET salario = p_nuevo_salario
WHERE empleado_id = p_empleado_id;
SELECT salario INTO p_nuevo_salario
FROM empleados
WHERE empleado_id = p_empleado_id;
END;
En este procedimiento, el parámetro p_nuevo_salario se utiliza como entrada y luego se actualiza con el nuevo salario desde la tabla.
¡Ahora tienes una visión clara de cómo funcionan los subprogramas en PL/SQL! En la siguiente lección, exploraremos manejo de excepciones, lo que te permitirá gestionar errores y eventos inesperados en tu código.

No hay comentarios:
Publicar un comentario