You are on page 1of 4

use Test_21;

go
--
create table Cliente(
idCliente int not null constraint pk_cliente
primary key,
nombre varchar(60) not null,
dni char(8) not null,
direccion varchar(100) not null,
idDistrito int not null
CONSTRAINT fk_distrito
REFERENCES Distrito(idDistrito) ,
telefono char(9) null,
correo varchar (80) null,
fechaActualizacion datetime not null );
go
-- el dni no debe de repetirse
Alter table Cliente
add constraint u_dni
unique (dni);
go
-- el dni debe de seguir el formato 99999999
ALTER TABLE Cliente
add constraint chk_dni
check(dni like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]');
--el telefono debe de seguir el formato 999999999
ALTER TABLE Cliente
add constraint chk_telefono
check(telefono like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]');
-- insertar un registro a la tabla cliente
go
create procedure usp_insertarCliente
-- declaracion de los parametros de entrada
@idCliente int ,
@nombre varchar(60) ,
@dni char(8),
@direccion varchar(100),
@idDistrito int,
@telefono char(9),
@correo varchar(80),
@fechaActualizacion datetime
as
insert into
Cliente(idCliente,nombre,dni,direccion,idDistrito,telefono,correo,fechaActualizacio
n)

values(@idCliente,@nombre,@dni,@direccion,@idDistrito,@telefono,@correo,@fechaActua
lizacion)
return 0
-- fin
-- probar el procedimiento
execute usp_insertarCliente 1,'Giancarlo Ayarquispe','70605950','MZ-3A-LOTE6-
DULANTO-CALLAO',1,'980421353','EPDD_1997@HOTMAIL.COM','01/03/2017';
GO
-- crear un procedimieto almacenado que permita actualizar un registro a la tabla
Cliente
go
create procedure usp_actualizarCliente
-- declaracion de los parametros de entrada
@idCliente int ,
@nombre varchar(60) ,
@dni char(8),
@direccion varchar(100),
@idDistrito int,
@telefono char(9),
@correo varchar(80),
@fechaActualizacion datetime
as
--
update Cliente
set nombre=@nombre,
dni=@dni,
direccion=@direccion,
idDistrito=@idDistrito,
telefono=@telefono,
correo=@correo,
fechaActualizacion=@fechaActualizacion
where idCliente=@idCliente
return 0
-- fin
-- probar el procedimiento
execute usp_actualizarCliente 1,'Giancarlo Jack Ayarquispe Gomez','70605950','MZ-
3A-LOTE6-TODOS UNIDOS-CALLAO',2,'980421353','EPDD_1997@HOTMAIL.COM','05/03/2017';
GO
--
select * from Cliente
------------------------------------------------------------------
GO
ALTER PROCEDURE usp_insertarCliente
--Declaracin de los parmetros de entrada
@idCliente INT =NULL,
@nombre VARCHAR(60) =NULL,
@dni CHAR(8)=NULL,
@direccion varchar(100)=null,
@idDistrito int=null,
@telefono char(9),
@correo varchar(80),
@fechaActualizacion datetime=null
AS
-- 01 nulidad de parametros
IF(@idCliente IS NULL OR @nombre IS NULL OR
@dni IS NULL or @direccion is null or @idDistrito is null or
@fechaActualizacion is null)
BEGIN
PRINT 'Debe ingresar los datos..'
RETURN 1 --Termina el proceso
END
--02 si se duplica el idCliente
IF EXISTS (SELECT * FROM Cliente
WHERE idCliente =@idCliente)
BEGIN
PRINT 'El cdigo ya existe..'
RETURN 2
END
-- 03 si sew duplica el dni
IF EXISTS (SELECT * FROM Cliente
WHERE dni=@dni)
BEGIN
PRINT 'El dni ya existe ..'
RETURN 3
END
-- 04 si el dni no sigue el formato 99999999
IF (@dni NOT LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
BEGIN
PRINT 'Error en el dni..'
RETURN 4
END
-- 05 si el telefono sigue el formato 999999999
IF (@telefono NOT LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
BEGIN
PRINT 'Error en el telefono..'
RETURN 5
END
-- 06 si no existe el idDistrito
if not exists (select * from Distrito
where idDistrito=@idDistrito)
begin
print 'no existe el idDistrito..'
return 6
end
--
INSERT INTO
Cliente(idCliente,nombre,dni,direccion,idDistrito,telefono,correo,fechaActualizacio
n)

values(@idCliente,@nombre,@dni,@direccion,@idDistrito,@telefono,@correo,@fechaActua
lizacion)
RETURN 0 --Exito
--FIN
--Probar el procedimiento almacenado
SELECT * FROM Cliente
--01 Nulidad de parmetros
EXECUTE usp_insertarCliente NULL,'Bruno Roldan','12345678','Lima
Cargo',2,'988421353','Brunis@HOTMAIL.COM','07/03/2017';
GO
--02 Si se duplica el idCliente
EXECUTE usp_insertarCliente 1,'Bruno Roldan','12345678','Lima
Cargo',2,'988421353','Brunis@HOTMAIL.COM','07/03/2017';
GO
--03 Si se duplica el DNI
EXECUTE usp_insertarCliente 2,'Bruno Roldan','70605950','Lima
Cargo',2,'988421353','Brunis@HOTMAIL.COM','07/03/2017';
GO
--04 Si el dni no sigue el formato 99999999
EXECUTE usp_insertarCliente 2,'Bruno Roldan','1234567V','Lima
Cargo',2,'988421353','Brunis@HOTMAIL.COM','07/03/2017';
GO
--05 SI EL TELEFONO NO SIGUE EL FORMATO 999999999
EXECUTE usp_insertarCliente 2,'Bruno Roldan','12345678','Lima
Cargo',2,'98842135O','Brunis@HOTMAIL.COM','07/03/2017';
GO
-- 06 si no existe el idDistrito
EXECUTE usp_insertarCliente 2,'Bruno Roldan','12345678','Lima
Cargo',6,'988421353','Brunis@HOTMAIL.COM','07/03/2017';
GO
--exito
EXECUTE usp_insertarCliente 2,'Bruno Roldan','12345678','Lima
Cargo',4,'988421353','Brunis@HOTMAIL.COM','07/03/2017';
GO
--crear un procedimiento almacenado que permita eliminar un Cliente
create procedure usp_eliminarCliente
@idCliente int =null
AS
--01 nulidad de parametro
if (@idCliente IS NULL)
BEGIN PRINT 'DEBE INGRESAR EL CODFIGO DEL CLIENTE '
RETURN 1
END
--02 SI no existe el codigo
IF NOT EXISTS (SELECT * FROM Cliente
WHERE idCliente=@idCliente)
BEGIN
PRINT 'NO EXISTE EL CODIGO'
RETURN 2
END
-- fin

You might also like