0% encontró este documento útil (0 votos)
104 vistas3 páginas

Jamas

El documento describe el uso de procedimientos almacenados para manipular los datos de una tabla "libros" y una tabla "empleados" en una base de datos. Se definen procedimientos para aumentar precios de libros según su editorial, insertar nuevos registros, y eliminar registros. También se definen procedimientos para aumentar sueldos de empleados según años de antigüedad, insertar y eliminar empleados. Los procedimientos ilustran el uso de parámetros con y sin valores predeterminados.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
104 vistas3 páginas

Jamas

El documento describe el uso de procedimientos almacenados para manipular los datos de una tabla "libros" y una tabla "empleados" en una base de datos. Se definen procedimientos para aumentar precios de libros según su editorial, insertar nuevos registros, y eliminar registros. También se definen procedimientos para aumentar sueldos de empleados según años de antigüedad, insertar y eliminar empleados. Los procedimientos ilustran el uso de parámetros con y sin valores predeterminados.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Problema:

Trabajamos con la tabla "libros" de una librera.


Eliminamos la tabla y la creamos nuevamente:
drop table libros;
create table libros(
titulo varchar2(40),
autor varchar2(30),
editorial varchar2(20),
precio number(5,2)
);
Ingresamos algunos registros:
insert
insert
insert
insert
insert
insert
insert
insert
insert

into
into
into
into
into
into
into
into
into

libros
libros
libros
libros
libros
libros
libros
libros
libros

values
values
values
values
values
values
values
values
values

('Uno','Richard Bach','Planeta',15);
('Ilusiones','Richard Bach','Planeta',12);
('El aleph','Borges','Emece',25);
('Aprenda PHP','Mario Molina','Nuevo siglo',50);
('Matematica estas ahi','Paenza','Nuevo siglo',18);
('Puente al infinito','Bach Richard','Sudamericana',14);
('Antologa','J. L. Borges','Paidos',24);
('Java en 10 minutos','Mario Molina','Siglo XXI',45);
('Cervantes y el quijote','Borges- Casares','Planeta',34);

Creamos un procedimiento que recibe el nombre de una editorial y luego aumenta en un 10% los precios de los libros de tal editorial:
create or replace procedure pa_libros_aumentar10(aeditorial in varchar2)
as
begin
update libros set precio=precio+(precio*0.1)
where editorial=aeditorial;
end;
Ejecutamos el procedimiento:
execute pa_libros_aumentar10('Planeta');
Verificamos que los precios de los libros de la editorial "Planeta" han aumentado un 10%:
select *from libros;
Creamos otro procedimiento que recibe 2 parmetros, el nombre de una editorial y el valor de incremento (que tiene por defecto el valor 10):
create or replace procedure pa_libros_aumentar(aeditorial in varchar2,aporcentaje in number default 10)
as
begin
update libros set precio=precio+(precio*aporcentaje/100)
where editorial=aeditorial;
end;
Ejecutamos el procedimiento enviando valores para ambos argumentos:
execute pa_libros_aumentar('Planeta',30);
Consultamos la tabla "libros" para verificar que los precios de los libros de la editorial "Planeta" han sido aumentados en un 30%:
select *from libros;
Ejecutamos el procedimiento "pa_libros_aumentar" omitiendo el segundo parmetro porque tiene establecido un valor por defecto:
execute pa_libros_aumentar('Paidos');
Consultamos la tabla "libros" para verificar que los precios de los libros de la editorial "Paidos" han sido aumentados en un 10% (valor por defecto):
select *from libros;
Definimos un procedimiento almacenado que ingrese un nuevo libro en la tabla "libros":
create or replace procedure pa_libros_insertar
(atitulo in varchar2 default null, aautor in varchar2 default 'desconocido',
aeditorial in varchar2 default 'sin especificar', aprecio in number default 0)
as
begin
insert into libros values (atitulo,aautor,aeditorial,aprecio);
end;

Llamamos al procedimiento sin enviarle valores para los parmetros:


execute pa_libros_insertar;
Veamos cmo se almacen el registro:
select *from libros;
Llamamos al procedimiento envindole valores solamente para el primer y cuarto parmetros correspondientes al ttulo y precio:
execute pa_libros_insertar('Uno',100);
Oracle asume que los argumentos son el primero y segundo, vea cmo se almacen el nuevo registro:
select *from libros;

Primer problema:

Una empresa almacena los datos de sus empleados en una tabla llamada "empleados".
1- Eliminamos la tabla y la creamos:
drop table empleados;
create table empleados(
documento char(8),
nombre varchar2(20),
apellido varchar2(20),
sueldo number(6,2),
fechaingreso date
);
2- Ingrese algunos registros:
insert
insert
insert
insert
insert

into
into
into
into
into

empleados
empleados
empleados
empleados
empleados

values('22222222','Juan','Perez',300,'10/10/1980');
values('22333333','Luis','Lopez',300,'12/05/1998');
values('22444444','Marta','Perez',500,'25/08/1990');
values('22555555','Susana','Garcia',400,'05/05/2000');
values('22666666','Jose Maria','Morales',400,'24/10/2005');

3- Cree un procedimiento almacenado llamado "pa_empleados_aumentarsueldo". Debe incrementar el sueldo de los empleados con cierta cantidad de aos
en la empresa (parmetro "ayear" de tipo numrico) en un porcentaje (parmetro "aporcentaje" de tipo numerico); es decir, recibe 2 parmetros.
4- Ejecute el procedimiento creado anteriormente.
5- Verifique que los sueldos de los empleados con ms de 10 aos en la empresa han aumentado un 20%
6- Ejecute el procedimiento creado anteriormente enviando otros valores como parmetros (por ejemplo, 8 y 10)
7- Verifique que los sueldos de los empleados con ms de 8 aos en la empresa han aumentado un 10%
8- Ejecute el procedimiento almacenado "pa_empleados_aumentarsueldo" sin parmetros
9- Cree un procedimiento almacenado llamado "pa_empleados_ingresar" que ingrese un empleado en la tabla "empleados", debe recibir valor para el
documento, el nombre, apellido y almacenar valores nulos en los campos "sueldo" y "fechaingreso"
10- Ejecute el procedimiento creado anteriormente y verifique si se ha ingresado en "empleados" un nuevo registro
11- Reemplace el procedimiento almacenado llamado "pa_empleados_ingresar" para que ingrese un empleado en la tabla "empleados", debe recibir valor
para el documento (con valor por defecto nulo) y fechaingreso (con la fecha actual como valor por defecto), los dems campos se llenan con valor nulo
12- Ejecute el procedimiento creado anteriormente envindole valores para los 2 parmetros y verifique si se ha ingresado en "empleados" un nuevo registro
13- Ejecute el procedimiento creado anteriormente enviando solamente la fecha de ingreso y vea el resultado
Oracle toma el valor enviado como primer argumento e intenta ingresarlo en el campo "documento", muestra un mensaje de error indicando que el valor es
muy grande, ya que tal campo admite 8 caracteres.
14- Cree (o reemplace) un procedimiento almacenado que reciba un documento y elimine de la tabla "empleados" el empleado que coincida con dicho
documento

15- Elimine un empleado empleando el procedimiento del punto anterior


16- Verifique la eliminacin

drop table empleados;


create table empleados(
documento char(8),
nombre varchar2(20),
apellido varchar2(20),
sueldo number(6,2),
fechaingreso date
);
insert
insert
insert
insert
insert

into
into
into
into
into

empleados
empleados
empleados
empleados
empleados

values('22222222','Juan','Perez',300,'10/10/1980');
values('22333333','Luis','Lopez',300,'12/05/1998');
values('22444444','Marta','Perez',500,'25/08/1990');
values('22555555','Susana','Garcia',400,'05/05/2000');
values('22666666','Jose Maria','Morales',400,'24/10/2005');

create or replace procedure pa_empleados_aumentarsueldo(ayear in number, aporcentaje in number)


as
begin
update empleados set sueldo=sueldo+(sueldo*aporcentaje/100)
where (extract(year from current_date)-extract(year from fechaingreso))>ayear;
end;
execute pa_empleados_aumentarsueldo(10,20);
select *from empleados;
execute pa_empleados_aumentarsueldo(8,10);
select *from empleados;
execute pa_empleados_aumentarsueldo;
create or replace procedure pa_empleados_ingresar
(adocumento in char, anombre in varchar2, aapellido in varchar2)
as
begin
insert into empleados values(adocumento, anombre, aapellido, null,null);
end;
execute pa_empleados_ingresar('30000000','Ana', 'Acosta');
select *from empleados;
create or replace procedure pa_empleados_ingresar
(adocumento in char default null, afecha in date default current_date)
as
begin
insert into empleados values(adocumento, null, null, null,afecha);
end;
execute pa_empleados_ingresar('32222222','10/10/2007');
select *from empleados;
execute pa_empleados_ingresar ('15/12/2000');
create or replace procedure pa_empleado_eliminar(adocumento in varchar2)
as
begin
delete from empleados where documento=adocumento;
end;
execute pa_empleado_eliminar('30000000');
select *from empleados;

También podría gustarte