Explorando el código, creando soluciones, y compartiendo conocimientos en el fascinante mundo del desarrollo de software.

sábado, 5 de octubre de 2024

PL/SQL: Subprogramas - Funciones y Procedimientos

Aprender PL/SQL: Subprogramas - Funciones y Procedimientos
Subprogramas en PL/SQL: Funciones y Procedimientos

¿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.


Lección Siguiente

© 2024 Aprende con PL/SQL

No hay comentarios:

Publicar un comentario

Java Iniciación en Java Hola mundo en Java Sintaxis básica de Java Orientación a objetos en Java Manejo de excepciones en Java Java desde Cero Colecciones en Java Manejo de Archivos en Java Entrada/Salida en Java Hilos y concurrencia en Java Programación Funcional en Java Programación Orientada a Objetos (OOP) en Java Manejo de fechas y tiempos Persistencia de datos en Java Desarrollo Web en Java Manejo de dependencias Gradle Maven JUnit Git Java Desarrollo de servicios web en Java Patrones de Diseño en Java Principios Básicos de Seguridad en Java Principios SOLID en Java Frameworks populares en Java Ciclo de vida de una aplicación Java Desarrollo Ágil Base de Datos en Java Hola mundo en COBOL Estructura básica de COBOL Sintaxis Básica de COBOL Manipulación de archivos en COBOL Búsqueda en Archivos Secuenciales COBOL Ordenación y Combinación de Archivos COBOL Manejo de Errores en COBOL Subprogramas y Modularidad en COBOL Archivos Indexados en COBOL Clasificación y Fusión de Archivos en COBOL Lectura y Escritura de Archivos Secuenciales COBOL IDE Desarrollo de Software Programación Java Plugin Eclipse Desarrollo Integrado Eclipse IDE Java Development Desarrollo de Aplicaciones Programación en Eclipse Desarrollo Ágil Java EE Desarrollo Web Desarrollo Móvil Eclipse Marketplace Eclipse Plugins JavaFX Desarrollo GUI Git Control de Versiones GitHub Git Bash Git Commands Git Workflow Branching Merging Repositorios Commit Git Branch Git Pull Git Push Git Clone Git Merge Conflictos en Git Git Log Git Tag Git Remote Visual Studio Code IDE Desarrollo de Software Extensiones Editor de Código Programación Configuración VSC Snippets Depuración Control de Versiones Integración Git Atajos de Teclado Temas Productividad Extensiones VSC Lenguajes de Programación