Primer problema:
Una empresa almacena los datos de sus empleados en una tabla llamada "empleados".
1- Eliminamos la tabla, si existe y la creamos:
if object_id('empleados') is not null
drop table empleados;
create table empleados(
documento char(8),
nombre varchar(20),
apellido varchar(20),
cantidadhijos tinyint,
seccion varchar(20),
primary key(documento)
);
2- Ingrese algunos registros:
insert into empleados values('22222222','Juan','Perez',2,'Contaduria');
insert into empleados values('22333333','Luis','Lopez',0,'Contaduria');
insert into empleados values ('22444444','Marta','Perez',NULL,'Sistemas');
insert into empleados values('22555555','Susana','Garcia',2,'Secretaria');
insert into empleados values('22666666','Jose Maria','Morales',1,'Secretaria');
insert into empleados values('22777777','Andres','Perez',3,'Sistemas');
insert into empleados values('22888888','Laura','Garcia',3,'Secretaria');
3- Elimine el procedimiento llamado "pa_empleados_seccion", si existe:
if object_id('pa_empleados_seccion') is not null
drop procedure pa_empleados_seccion;
4- Cree un procedimiento que muestre todos los empleados de una sección determinada que se ingresa
como parámetro. Si no se ingresa un valor, o se ingresa "null", se muestra un mensaje y se sale del
procedimiento.
5- Ejecute el procedimiento enviándole un valor para el parámetro.
6- Ejecute el procedimiento sin parámetro.
7- Elimine el procedimiento "pa_actualizarhijos", si existe:
if object_id('pa_actualizarhijos') is not null
drop procedure pa_actualizarhijos;
8- Cree un procedimiento almacenado que permita modificar la cantidad de hijos ingresando el
documento de un empleado y la cantidad de hijos nueva. Ambos parámetros DEBEN ingresarse con un
valor distinto de "null". El procedimiento retorna "1" si la actualización se realiza (si se
ingresan valores para ambos parámetros) y "0", en caso que uno o ambos parámetros no se ingresen o
sean nulos.
9- Declare una variable en la cual se almacenará el valor devuelto por el procedimiento, ejecute el
procedimiento enviando los dos parámetros y vea el contenido de la variable.
El procedimiento retorna "1", con lo cual indica que fue actualizado.
10- Verifique la actualización consultando la tabla:
select *from empleados;
11- Ejecute los mismos pasos, pero esta vez envíe solamente un valor para el parámetro "documento".
Retorna "0", lo que indica que el registro no fue actualizado.
12- Verifique que el registro no se actualizó consultando la tabla:
select *from empleados;
13- Emplee un "if" para controlar el valor de la variable de retorno. Enviando al procedimiento valores para los parámetros.
Retorna 1.
14- Verifique la actualización consultando la tabla:
select *from empleados;
15- Emplee nuevamente un "if" y envíe solamente valor para el parámetro "hijos".
Retorna 0.
Ver solución
if object_id('empleados') is not null
drop table empleados;
create table empleados(
documento char(8),
nombre varchar(20),
apellido varchar(20),
cantidadhijos tinyint,
seccion varchar(20),
primary key(documento)
);
insert into empleados values('22222222','Juan','Perez',2,'Contaduria');
insert into empleados values('22333333','Luis','Lopez',0,'Contaduria');
insert into empleados values ('22444444','Marta','Perez',NULL,'Sistemas');
insert into empleados values('22555555','Susana','Garcia',2,'Secretaria');
insert into empleados values('22666666','Jose Maria','Morales',1,'Secretaria');
insert into empleados values('22777777','Andres','Perez',3,'Sistemas');
insert into empleados values('22888888','Laura','Garcia',3,'Secretaria');
if object_id('pa_empleados_seccion') is not null
drop procedure pa_empleados_seccion;
create procedure pa_empleados_seccion
@seccion varchar(20)=null
as
if @seccion is null
begin
select 'Debe indicar una seccion'
return
end
select nombre from empleados where seccion=@seccion;
exec pa_empleados_seccion 'Secretaria';
exec pa_empleados_seccion;
if object_id('pa_actualizarhijos') is not null
drop procedure pa_actualizarhijos;
create procedure pa_actualizarhijos
@documento char(8)=null,
@hijos tinyint=null
as
if (@documento is null) or (@hijos is null)
return 0
else
begin
update empleados set cantidadhijos=@hijos where documento=@documento
return 1
end;
declare @retorno int
exec @retorno=pa_actualizarhijos '22222222',3
select 'Registro actualizado=1' = @retorno;
select *from empleados;
declare @retorno int
exec @retorno=pa_actualizarhijos '22333333'
select 'Registro actualizado=1' = @retorno;
select *from empleados;
declare @retorno int
exec @retorno=pa_actualizarhijos '22333333',2
if @retorno=1 select 'Registro actualizado'
else select 'Registro no actualizado, se necesita un documento y la cantidad de hijos';
select *from empleados;
declare @retorno int
exec @retorno=pa_actualizarhijos @hijos=4
if @retorno=1 select 'Registro actualizado'
else select 'Registro no actualizado, se necesita un documento y la cantidad de hijos';