domingo, 6 de octubre de 2019

Trabajando con SP's


Este día realice unos cuantos “Stored Procedure” los cuales no eran muy complejos, uno de los SP lo complete y el otro lo deje incompleto,  el “Stored procedure” que complete fue el de insertar una nueva cuenta de ahorro la cual no fue nada complicada y lo único que puede hacer que se caiga el SP a nivel de sus parámetros, sería que le ingresaran por parámetro un número de identificación de un cliente que no existe en la base de datos, a continuación el código:

CREATE PROCEDURE [dbo].[CASP_InsertarCuentaAhorro]
       -- Add the parameters for the stored procedure here
       @Numero_Cuenta nvarchar(50),
       @Saldo money,
       @tipoCuentaAhorro nvarchar(50),
       @Identificacion_Usuario nvarchar(50),
       @FechaCreacion date
AS
BEGIN
       -- SET NOCOUNT ON added to prevent extra result sets from
       -- interfering with SELECT statements.
       SET NOCOUNT ON;

    -- Insert statements for procedure here
       BEGIN TRY
      
             -- Se verifica que los parametros no vengan nulos

             IF @Numero_Cuenta = NULL
             BEGIN
                    return -100001
             END
            
             IF @Saldo = NULL
             BEGIN
                    return -100002
             END

             IF @tipoCuentaAhorro = NULL
             BEGIN
                    return -100003
             END

             IF @Identificacion_Usuario = NULL
             BEGIN
                    return -100004
             END

             IF @FechaCreacion = NULL
             BEGIN
                    return -100005
             END
            
             --Ahora a insertar
                    -- Se verifica si ya existia
             IF EXISTS(SELECT *
                                  FROM CuentaAhorro CA
                                  WHERE CA.Numero_Cuenta = @Numero_Cuenta)
                    BEGIN
                           return -100006 -- El Cliente ingresado ya existe
                    END
             ELSE
                    BEGIN
                           INSERT dbo.CuentaAhorro
                           SELECT @Numero_Cuenta, @Saldo, TC.id, CL.id, @FechaCreacion
                           FROM TipoCuentaAhorro TC, Cliente CL
                           WHERE TC.Nombre = @tipoCuentaAhorro
                           AND CL.Documento_Identificacion = @Identificacion_Usuario
                    END


       END TRY

       BEGIN CATCH
             return @@ERROR * -1
       END CATCH
END

El otro “stored procedure” fue para la inserción de un nuevo cliente, este “stored procedure” quedo incompleto ya que no trae una inserción de persona, es decir no incluye el cliente en la tabla Persona solo en la tabla Cliente, por eso digo que el SP falta por completar, A continuación el código:
ALTER PROCEDURE [dbo].[CASP_InsertarCliente]
       -- Add the parameters for the stored procedure here
       @Usuario nvarchar(100),
       @Clave nvarchar(100),
       @Tipo_Doumento_Identificacion nvarchar(100),
       @Documento_Identificacion nvarchar(50),
       @Email nvarchar(100),
       @Telefono1 int,
       @Telefono2 int,
       @Nombre nvarchar(100),
       @Fecha_Nacimiento date
      
AS
BEGIN
       -- SET NOCOUNT ON added to prevent extra result sets from
       -- interfering with SELECT statements.
       SET NOCOUNT ON;

    -- Insert statements for procedure here
       BEGIN TRY
      
             -- Se verifica que los parametros no vengan nulos

             IF @Usuario = NULL
             BEGIN
                    return -100001
             END
            
             IF @Clave = NULL
             BEGIN
                    return -100002
             END
            
             IF @Tipo_Doumento_Identificacion = NULL
             BEGIN
                    return -100003
             END

             IF @Documento_Identificacion = NULL
             BEGIN
                    return -100004
             END

             IF @Email = NULL
             BEGIN
                    return -100005
             END

             IF @Telefono1 = NULL
             BEGIN
                    return -100006
             END

             IF @Telefono2 = NULL
             BEGIN
                    return -100007
             END

             IF @Nombre = NULL
             BEGIN
                    return -100008
             END

             --Ahora a insertar
                    -- Se verifica si ya existia
             IF EXISTS(SELECT *
                                  FROM Cliente C
                                  WHERE C.Documento_Identificacion = @Documento_Identificacion)
                    BEGIN
                           return -100009 -- El Cliente ingresado ya existe
                    END
             ELSE
                    IF EXISTS(SELECT *
                                  FROM Cliente C
                                  WHERE C.Usuario = @Usuario)
                           BEGIN
                                  return -100009 -- El usuario ingresado ya existe
                           END
                    ELSE
                           BEGIN
                                  INSERT dbo.Cliente
                                  SELECT TID.id, @Fecha_Nacimiento, @Usuario, @Clave,
                                               @Tipo_Doumento_Identificacion, @Documento_Identificacion,
                                               @Email, @Telefono1, @Telefono2, @Nombre
                                  FROM TipoID TID
                                  WHERE TID.Nombre = @Tipo_Doumento_Identificacion
                           END
       END TRY

       BEGIN CATCH
             return @@ERROR * -1
       END CATCH
END

La cantidad de horas invertidas fue de aproximadamente 2 horas, esto debido a confusiones con el formato date a la hora de trabajar con la ejecución de los SP

No hay comentarios:

Publicar un comentario