Entrada 7 (sp_GetEmpleadoById)

  Fecha: 22/04/2026

Inicio: [23:00] | Fin: [23:27] || Total: [27 minutos]

Presentes: Sebastián Ramírez Abarca

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
¿QUÉ HICIMOS HOY?
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Se avanzó con los store procedures, se terminó y se probó en una copia local de la base de datos de la tarea el store procedure sp_GetEmpleadoById
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
PROBLEMAS ENCONTRADOS Y CÓMO SE RESOLVIERON
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. Bloqueo haciendo el store procedure pues no recordaba como obtener el nombre del puesto con el idPuesto desde el SELECT a dbo.Empleado.
Se resolvió haciendo búsqueda en internet sobre cómo hacerlo y era hacer INNER JOIN.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
DUDAS Y DIVERGENCIAS DE CRITERIO
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. La única duda fue como obtener el nombre del puesto con el idPuesto desde el SELECT a dbo.Empleado.
 2. No hubo divergencias de criterio en esta sesión.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
AVANCE DEL CÓDIGO
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
sp_GetEmpleadoById:
USE VacacionesDB;
GO

-- =====================================================
-- SP: Obtener un empleado por ValorDocumentoIdentidad
-- =====================================================
DROP PROCEDURE IF EXISTS sp_GetEmpleadoById;
GO

CREATE PROCEDURE sp_GetEmpleadoById
    @inValorDocumentoIdentidad VARCHAR(32)
    , @outResultCode INT OUTPUT
AS
BEGIN
    SET NOCOUNT ON;

    BEGIN TRY
       
        -- Devuelve la información del empleado activo que coincide con ValorDocumentoIdentidad
        SELECT
            e.ValorDocumentoIdentidad
            , e.Nombre
            , e.idPuesto
            , p.Nombre AS NombrePuesto
            , e.FechaContratación
            , e.SaldoVacaciones
            , e.EsActivo
        FROM dbo.Empleado e
        INNER JOIN Puesto p ON e.idPuesto = p.id
        WHERE ValorDocumentoIdentidad = @inValorDocumentoIdentidad
            AND EsActivo = 1

        -- No hubo errores
        SET @outResultCode = 0;

    END TRY
    BEGIN CATCH
       
        INSERT INTO DBError (UserName, Number, State, Severity, Line, [Procedure], Message, DateTime)
        Values(
            SYSTEM_USER
            , ERROR_NUMBER()
            , CAST(ERROR_STATE() AS VARCHAR(32))
            , CAST(ERROR_SEVERITY() AS VARCHAR(32))
            , ERROR_LINE()
            , ISNULL(ERROR_PROCEDURE(), 'sp_GetEmpleadoById')
            , ERROR_MESSAGE()
            , GETDATE()
        );

        SET @outResultCode = 50008;

    END CATCH

END;
GO
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
MORALEJAS / BUENAS PRÁCTICAS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Solo una moraleja a convertir en buena práctica: al usar una nueva forma de hacer una acción apuntarla por si se olvida más adelante revisar si existe algo con lo que hacer lo que quiero lograr.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
PRÓXIMA SESIÓN: ¿QUÉ SIGUE?
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- Realizar sp_UpdateEmpleado para actualizar información de empleados.

Comentarios

Entradas más populares de este blog

Entrada 16 (Controlador de movimientos)

Entrada 20 (Lógica de insertarMovimientos, conectarla y probarla)

Entrada 21 (Análisis de resultados)