Hora Inicio: 8 p.m
Hora Fin: 10 p.m
Horas Trabajadas: 2 horas
Modalidad: Virtual
Nos reunimos para terminar los últimos
detalles del proyecto y poder terminar el documento escrito.
Teníamos una duda sobre que Id
guardar en la bitácora cuando se hacía una inserción no exitosa por lo que
decidimos preguntar en el grupo:
Una vez hecha la consulta se realizaron las modificaciones y el codigo quedo de la sigiente manera:
@inUserName VARCHAR(64)
, @inPassword VARCHAR(64)
, @inIP VARCHAR(64)
, @OutResulTCode INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY
-- ejemplo de ejecucion del SP
ALTER PROCEDURE [dbo].[VerificarUsuario]
-- se hacen declaraciones
DECLARE @IdPostByUser INT;
-- se hacen inicializacion
SET @OutResulTCode = 0;
SET @IdPostByUser = 0;
-- Buscamos si el usuario existe en la base de datos
IF NOT EXISTS (
SELECT 1
FROM dbo.Usuario AS U
WHERE U.Username = @inUserName COLLATE SQL_Latin1_General_CP1_CS_AS
)
BEGIN
SET @IdPostByUser = 1;
SET @OutResulTCode = 50001; -- Código de error para usuario no encontrado
INSERT INTO dbo.BitacoraEvento(
[IdTipoEvento]
, [Descripcion]
, [IdPostByUser]
, [PostInIP]
, [PostTime]
)
VALUES (
2
, ' Numero de intento:'
+' Codigo de error:' + CAST(@OutResulTCode AS VARCHAR)
, @IdPostByUser
, @inIP
, GETDATE()
);
RETURN;
END;
ELSE IF NOT EXISTS (
SELECT 1
FROM dbo.Usuario AS U
WHERE U.[Password] = @inPassword COLLATE SQL_Latin1_General_CP1_CS_AS
)
BEGIN
SET @IdPostByUser = 1;
SET @OutResulTCode = 50002; -- Código de error para contraseña incorrecta
INSERT INTO dbo.BitacoraEvento(
[IdTipoEvento]
, [Descripcion]
, [IdPostByUser]
, [PostInIP]
, [PostTime]
)
VALUES (
2
, ' Numero de intento:'
+' Codigo de error:' + CAST(@OutResulTCode AS VARCHAR)
, @IdPostByUser
, @inIP
, GETDATE()
);
RETURN;
END;
ELSE IF EXISTS (
SELECT 1
FROM dbo.Usuario AS U
WHERE U.Username = @inUserName COLLATE SQL_Latin1_General_CP1_CS_AS
AND U.[Password] = @inPassword COLLATE SQL_Latin1_General_CP1_CS_AS)
BEGIN
SELECT @IdPostByUser = U.id
FROM dbo.Usuario AS U
WHERE U.[Username] = @inUserName
-- Login exitoso: Registro en la bitácora
INSERT INTO dbo.BitacoraEvento(
[IdTipoEvento]
, [Descripcion]
, [IdPostByUser]
, [PostInIP]
, [PostTime]
)
VALUES (
1
,''
, @IdPostByUser
, @inIP
, GETDATE()
);
RETURN;
END;
END TRY
BEGIN CATCH
INSERT INTO dbo.DBError VALUES (
USER_NAME()
, ERROR_NUMBER()
, ERROR_STATE()
, ERROR_SEVERITY()
, ERROR_LINE()
, ERROR_PROCEDURE()
, ERROR_MESSAGE()
,GETDATE()
);
-- Retorna un mensaje de error para el usuario
SET @OutResulTCode=50008; -- Codigo de error standar del profe para informar de un error capturado en el catch
END CATCH
SET NOCOUNT OFF;
END
Finalmente, se eliminaron los datos del XML ya que teniamos cargados unos datos viejos y empezamos a realizar pruebas para asegurarnos que todo el codigo funcionara correctamente.

No hay comentarios.:
Publicar un comentario