¿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