laboratorio 26.06.2012
DESCRIPTION
Laboratorio consultas PLSQLTRANSCRIPT
LABORATORIO PLSQL
25.06.2012
Integrantes: Febe Moena
Elizabeth Morales
Andrea Uribe
Profesor: Cristian Salazar
Ayudante: José Luis Carrasco
Curso: ADMI 273
Valdivia 26 de Junio, 2012
1.- Realice una cadena de inserciones, esto es:
- Crear un procedimiento para agregar Ciudades.
create or replace procedure ICiudad(codigo_ciudad in number, Ciudad in varchar2) is
begin
INSERT INTO Ciudad (Id_Ciudad, Nombre) VALUES (codigo_ciudad, Ciudad);
COMMIT;
end ICiudad;
begin
iciudad(codigo_ciudad => :codigo:ciudad,
ciudad => :ciudad);
end;
- Crear un procedimiento para agregar Campus.
create or replace procedure icampus(codigo_campus in number, campus in varchar2,
codigo_ciudad in number) is
begin
INSERT INTO Campus (id_campus, Nombre,id_ciudad)
VALUES(codigo_campus, campus, codigo_ciudad);
COMMIT;
end icampus;
begin
icampus(codigo_campus => :codigo_campus,
campus => :campus,
codigo_ciudad => :codigo_ciudad);
end;
- Crear un procedimiento para agregar Carreras
create or replace procedure icarrera(codigo_carrera in number,
carrera in varchar2,
codigo_campus in number) is
begin
INSERT INTO carreras
(id_carrera, Nombre, id_campus)
VALUES
(codigo_carrera, carrera, codigo_campus);
COMMIT;
end icarrera;
begin
icarrera(codigo_carrera => :codigo_carrera,
carrera => :carrera,
codigo_campus => :codigo_campus);
end;
- Crear un procedimiento para agregar Estudiantes
create or replace procedure iestudiantes(rut in number,
nombres_e in varchar2,
apellidos_e in varchar2,
edad_e in number,
fono_e in number,
direccion_e in varchar2,
id_carrera_e in number) is
begin
INSERT INTO Estudiantes
(Rut_Est, Nombres, Apellidos, Edad, Fono, Direccion, Id_Carrera)
VALUES
(rut,
nombres_e,
apellidos_e,
edad_e,
fono_e,
direccion_e,
id_carrera_e);
COMMIT;
end iestudiantes;
begin
iestudiantes(rut => :rut,
nombres_e => :nombres_e,
apellidos_e => :apellidos_e,
edad_e => :edad_e,
fono_e => :fono_e,
direccion_e => :direccion_e,
id_carrera_e => :id_carrera_e);
end;
2.- Realice un procedimiento que actualice la edad de los estudiantes a partir de su RUT.
create or replace procedure actEdad(rut in number, edad_e in number) is
begin
UPDATE estudiantes SET edad = edad_e where rut_est = rut;
COMMIT;
end actEdad;
begin
actedad(rut => :rut,
edad_e => :edad_e);
end;
3.- Realice una función que entregue la edad promedio de los estudiantes de “PED. EN EDUCACIÓN DIFERENCIAL”.
create or replace function edadpromedio return number is
Resultado number;
begin
Select sum(edad) / count(*)
INTO Resultado
FROM estudiantes
where id_carrera = 45;
return Resultado;
end edadpromedio;
begin
:result := edadpromedio;
end;
4.- Realice una función que entregue la suma de edades de los estudiantes del campus ISLA TEJA. La función debe llamarse SUMA_TEJA.
create or replace function SUMA_TEJA return number is
Result number;
begin
SELECT SUM(e.edad)
INTO Result
from Estudiantes e, carreras c
where c.id_carrera = e.id_carrera
and id_campus = 2;
return(Result);
end SUMA_TEJA;
begin
:result := suma_teja;
end;
5.- Realice una función que cuente los estudiantes del campus ISLA TEJA. La función debe llamarse CUENTA_TEJA.
create or replace function CUENTA_TEJA return number is
Result number;
begin
SELECT count(*)
INTO Result
from Estudiantes e, Carreras c
where e.id_carrera = c.id_carrera
and id_campus = 2;
return Result;
end CUENTA_TEJA;
begin
:result := cuenta_teja;
end;
6.- Una vez realizado 4 y 5, ejecute la siguiente consulta y describa que arroja como resultado: SELECT (SUMA_TEJA/CUENTA_TEJA) as NX FROM DUAL;
Esta consulta arroja el promedio de edad de los estudiantes del campus Isla Teja:
7.- (RESUELTO) Entregue el número total de estudiantes de cada una de las carreras, mostrando el nombre de la carrera y su número de estudiantes respectivos:
SELECT c.NOMBRE as CARRERA, count(e.RUT_EST) as N_ESTUDIANTES
FROM ESTUDIANTES e, CARRERAS c
where e.ID_CARRERA = c.ID_CARRERA
GROUP BY c.NOMBRE
8.- Entregue el número total de estudiantes de cada uno de los campus de forma similar al ejercicio 7.
SELECT cs.nombre as CAMPUS, count(e.RUT_EST) as N_ESTUDIANTES
FROM Estudiantes e, Carreras c, Campus cs
where e.id_carrera = c.id_carrera
and c.id_campus = cs.id_campus
GROUP BY cs.nombre;
9.- Entregue el número total de estudiantes de cada una de las ciudades de forma similar al ejercicio 7.
SELECT ci.nombre as CIUDAD, count(e.RUT_EST) as N_ESTUDIANTES
FROM Estudiantes e, Carreras c, Campus cs, Ciudad ci
where e.id_carrera = c.id_carrera
and c.id_campus = cs.id_campus
and cs.id_ciudad = ci.id_ciudad
GROUP BY ci.nombre;