Vous êtes sur la page 1sur 15

1.

Construya los siguiente procedimientos Almacenados para inserción de registros:

 En MySQL; para las tablas Profesor, Curso, Estudiante, Estudiantexcurso.

Profesor.
CREATE PROCEDURE insertarProfesor (doc_prof varchar(11), nom_prof
varchar (30), ape_prof varchar(30), cate_prof int(11), sal_prof int(11))
INSERT INTO profesor (doc_prof, nom_prof, ape_prof, cate_prof, sal_prof)
VALUES (doc_prof, nom_prof, ape_prof, cate_prof, sal_prof);

Ejemplo:
call insertarProfesor ('1123456','Pedro', 'Valderrama',5,2300000);

Curso.
CREATE PROCEDURE insertarCurso (cod_curs int(11), nom_curs varchar(100),
horas_curs int (11), valor_curs int(11))
INSERT INTO curso (cod_curs, nom_curs, horas_curs, valor_curs) VALUES
(cod_curs, nom_curs, horas_curs, valor_curs);

Ejemplo:
call insertarCurso(1234,'Ingles',24,500000);

Estudiante:
CREATE PROCEDURE insertarEstudiante(doc varchar(11), nom varchar(30), ape
varchar (30), edad int(11))
INSERT INTO estudiante (doc_est, nom_est, ape_est, edad_est) VALUES (doc,
nom, ape, edad);

Ejemplo:
CALL insertarEstudiante ('4321','Jair','Mancilla',33);

Estudiantexcurso:
CREATE PROCEDURE insertarEstudiantexcurso (cod_cur int(11), doc_est
varchar(30), fec_ini date)
INSERT INTO estudiantexcurso (cod_cur_estcur, doc_est_estcur, fec_ini_estcur)
VALUES (cod_cur, doc_est, fec_ini);

Ejemplo:
CALL insertarEstudiantexcurso (345671,'1098765678','2012-03-05');
En ORACLE; para las tablas Cliente, Articulo, Pedido.

Cliente.

create or replace procedure "INSERTARCLIENTE"


(id VARCHAR2,
nom VARCHAR2,
ape VARCHAR2,
dir VARCHAR2,
dep VARCHAR2,
mescum VARCHAR2)
is
begin
INSERT INTO CLIENTE (ID_CLI, NOM_CLI, APE_CLI, DIR_CLI, DEP_CLI, MES_CUM_
CLI) VALUES (ID, NOM, APE, DIR, DEP, MESCUM);
end;
Ejemplo:

BEGIN
INSERTARCLIENTE('12313','YERLI','CASTRILLON','CALLE X','BOGOTA','AGOSTO');
END;

Articulo.
create or replace procedure "INSERTARARTICULO"
(tit_art IN VARCHAR2,
aut_art IN VARCHAR2,
edi_art IN VARCHAR2,
prec_art IN NUMBER)
is
begin
INSERT INTO ARTICULO (TIT_ART, AUT_ART, EDI_ART, PREC_ART) VALUES (TIT_
ART, AUT_ART, EDI_ART, PREC_ART);
end;

Ejemplo:
BEGIN
INSERTARARTICULO('LAVORAGINE','VASQUEZ','CARVAJAL',28000);
END;

Pedido.

create or replace procedure "INSERTARPEDIDO"


(idcliente VARCHAR2,
fecpedido DATE,
valor NUMBER)
is
begin
INSERT INTO PEDIDO(ID_CLI_PED, FEC_PED, VAL_PED) VALUES (idcliente, fecpedi
do, valor);
end;

Ejemplo:
BEGIN
INSERTARPEDIDO('12313','12-12-2012',250000);
END;

En el Motor de su preferencia (ORACLE O MySQL), para las tablas,

Compañía, TiposAutomotores, Automotores, Aseguramientos,


Incidentes.

Compañía.
CREATE PROCEDURE insertarCompania(nit varchar(11), nombre varchar(30),
anofundado, replegal varchar(100))
INSERT INTO compania (comnit, comnombre, comanofun, comreplegal) VALUES (nit,
nombre, anofundado, replegal);
Ejemplo.
CALL insertarCompania('12344567', 'center', 2000, 'HECTOR');

Tipos de automotor
CREATE PROCEDURE insertarTipoAutomotor (tipo int(11), nombre varchar(30))
INSERT INTO tipoautomotor (auttipo, nom_tipoauto) VALUES (tipo, nombre);

Ejemplo.
CALL PROCEDURE insertarTipoAutomotor (3,'MOTOCICLETA');

Automotor
CREATE PROCEDURE insertarAutomotor (placa varchar(6), marca varchar(30),
tipo int(30), modelo int(30), numpasajeros int(11), cilindraje int(11), chasis
varchar(20))
INSERT INTO automotor(autoplaca, automarca, autotipo, automodelo,
autonumpasajeros, autocilindraje, autonumchasis) VALUES (placa, marca, tipo, modelo,
numpasajeros, cilindraje, chasis);

Ejemplo.
CALL PROCEDURE
insertarAutomotor('QNK13A','AKT',1,2013,2,125,'ADFQWEFADFA');

Aseguramiento
CREATE PROCEDURE insertarSeguro(asefechainicio date, asefechaexpiracion
date, asevalorasegurado int(11), aseestado varchar(15), asecosto int(11),
aseplaca varchar(6))
INSERT INTO aseguramiento(asefechainicio, asefechaexpiracion, asevalorasegurado,
aseestado, asecosto, aseplaca) VALUES(asefechainicio, asefechaexpiracion,
asevalorasegurado, aseestado, asecosto, aseplaca);

Ejemplo.
CALL insertarSeguro ('2012-02-15', '2013-02-16', 2800000, 'ACTIVO', 120000, 'FLL420');

Incidentes.
CREATE PROCEDURE insertarIncidente(fecha date, placa varchar(6), lugar
varchar(40), numheridos int(11), fatalidades int(11), autosinvolucrados int(11))
INSERT INTO incidentes(incifecha, inciplaca, incilugar, incicantheridos,
incicanfatalidades, incicanautosinvolucrados) VALUES (fecha, placa, lugar, numheridos,
fatalidades, autosinvolucrados);

Ejemplo.
CALL insertarIncidente('2012-12-21', 'FLL420', 'Danubio',0,0,2);

2. En Oracle construya los procedimientos almacenados para realizar los


siguientes procesos:

• Muestre los salarios de los profesores ordenados por categoría.


create or replace procedure "MUESTRASALARIO" IS
CURSOR CURS IS
SELECT NOM_PROF, APE_PROF, SAL_PROF, CATE_PROF FROM PROFESOR O
RDER BY CATE_PROF ASC;
begin
DBMS_OUTPUT.PUT_LINE(' NOMBRE ' || ' APELLIDO ' || ' SALARIO ' || '
CATEGORIA ');
FOR RESULTADOS IN CURS LOOP
DBMS_OUTPUT.PUT_LINE(RESULTADOS.NOM_PROF ||' ' ||RESULTADOS.APE_PR
OF || ' '|| RESULTADOS.SAL_PROF || ' '||RESULTADOS.CATE_PROF);
END LOOP;
end;

EJEMPLO:
BEGIN
MUESTRASALARIO;
END;

• Muestre los cursos cuyo valor sea mayor a $500.000.

create or replace procedure "MAYORVALOR" IS


CURSOR CURS IS
SELECT NOM_CURS, VALOR_CURS FROM CURSO WHERE VALOR_CURS > 500
000;
begin
DBMS_OUTPUT.PUT_LINE(' NOMBRE DEL CURSO ' || 'VALOR ');
FOR RESULTADOS IN CURS LOOP
DBMS_OUTPUT.PUT_LINE(RESULTADOS.NOM_CURS ||' ' ||RESULTADOS.VALOR_
CURS);
END LOOP;
end;

EJEMPLO:
BEGIN
MAYORVALOR;
END;

• Visualizar el nombre, apellido y dirección de todos aquellos clientes


que hayan realizado un pedido el día 25 /02/2012.

create or replace procedure "PEDIDOSXFECHA" IS


CURSOR CURS IS
SELECT CLIENTE.NOM_CLI, CLIENTE.APE_CLI, DIR_CLI, FEC_PED FROM CLIEN
TE INNER JOIN PEDIDO ON CLIENTE.ID_CLI = PEDIDO.ID_CLI_PED WHERE FEC_P
ED = '02-25-2012';
begin
DBMS_OUTPUT.PUT_LINE(' NOMBRE DEL CLIENTE ||' ||' DIRECCION DEL
CLIENTE ||' ||' FECHA DEL PEDIDO ');
FOR RESULTADOS IN CURS LOOP
DBMS_OUTPUT.PUT_LINE(RESULTADOS.NOM_CLI ||' ' ||RESULTADOS.APE_CLI || '
|| ' ||RESULTADOS.DIR_CLI ||' || '|| RESULTADOS.FEC_PED);
END LOOP;
end;

EJEMPLO:
BEGIN
PEDIDOSXFECHA;
END;
• Listar todos los pedidos realizados incluyendo el nombre del artículo.
create or replace procedure "LISTARPEDIDOS" IS
CURSOR CURS IS
SELECT pedido.*, articulo.tit_art
FROM articulo INNER JOIN (pedido INNER JOIN articuloxpedido ON pedido.id_ped = ar
ticuloxpedido.id_ped_artped) ON articulo.id_art = articuloxpedido.id_art_artped;

begin
DBMS_OUTPUT.PUT_LINE(' NOMBRE DEL PEDIDO ||'|| ' ' || ' ID DEL CLIENTE
||' || ' FECHA DEL PEDIDO ||' || ' VALOR DEL PEDIDO ||' );
FOR RESULTADOS IN CURS LOOP
DBMS_OUTPUT.PUT_LINE(RESULTADOS.TIT_ART || ' ||
' ||RESULTADOS.ID_CLI_PED || ' || ' ||RESULTADOS.FEC_PED || ' ||
' ||RESULTADOS.VAL_PED);
END LOOP;
end;

EJEMPLO:
BEGIN
LISTARPEDIDOS;
END;

• Listar los todos datos de los automotores cuya póliza expira en


octubre de 2013, este reporte debe visualizar la placa, el modelo, la
marca, número de pasajeros, cilindraje nombre de automotor, el valor
de la póliza y el valor asegurado.

create or replace procedure "EXPIRAPOLIZA" IS


CURSOR CURS IS
SELECT aseguramiento.*, automotor.*
FROM tipoautomotor INNER JOIN (automotor INNER JOIN aseguramiento ON automoto
r.autoplaca = aseguramiento.aseplaca) ON tipoautomotor.auttipo = automotor.autotipo;

begin
DBMS_OUTPUT.PUT_LINE(' FECHA EXPIRACION ||' ||' PLACA DEL AUTOMOTOR
' || ' MARCA ||' || ' VALOR ASAGURADO ');
FOR RESULTADOS IN CURS LOOP
DBMS_OUTPUT.PUT_LINE(RESULTADOS.ASEFECHAEXPIRACION || ' ||
' ||RESULTADOS.AUTOPLACA || ' || '||RESULTADOS.AUTOMARCA || '
||' ||RESULTADOS.ASEVALORASEGURADO );
END LOOP;
end;

EJEMPLO:
BEGIN
EXPIRAPOLIZA;
END;

3. En MySQL construya los procedimientos almacenados para realizar los


siguientes procesos:

• Muestre todos los campos de la tabla curso en orden ascendente


según el valor.

CREATE PROCEDURE mostrarCursoSegunValorAsc ()


SELECT * FROM curso ORDER BY valor_curs ASC;

Ejemplo.
CALL mostrarCursoSegunValorAsc;

• Mostrar los pedidos con los respectivos artículos(código, nombre,


valor y cantidad pedida).
CREATE PROCEDURE mostrarPedidoConArticulos ()
SELECT pedido.id_ped, articulo.tit_art, articuloxpedido.can_art_artped,
articuloxpedido.val_ven_art_artped
FROM articulo INNER JOIN (pedido INNER JOIN articuloxpedido ON pedido.id_ped =
articuloxpedido.id_ped_artped) ON articulo.id_art = articuloxpedido.id_art_artped;
Ejemplo.
CALL mostrarPedidoConArticulos;

• Visualizar los datos de las empresas fundadas entre el año 1991 y


1998.
CREATE PROCEDURE mostrarAnoFundadaEmpresa ()
SELECT * FROM compania WHERE comanofun BETWEEN '1991' and '1998';

Ejemplo.

CALL mostrarAnoFundadaEmpresa;

• Visualizar todos los clientes organizados por apellido.

CREATE PROCEDURE mostrarClientexApellidoAsc()


SELECT * FROM cliente ORDER by ape_cli ASC;

Ejemplo.
CALL mostrarClientexApellidoAsc;

• Visualizar los datos de los incidentes que han tenido un(1) herido,
este reporte debe visualizar la placa del automotor, con los respectivos
datos de la póliza como son fecha de inicio, valor, estado y valor
asegurado.
CREATE PROCEDURE mostrarIncidente()
SELECT incidentes.incicantheridos, incidentes.incilugar, incidentes.inciplaca,
aseguramiento.asefechainicio, aseguramiento.asecosto, aseguramiento.aseestado,
aseguramiento.asevalorasegurado
FROM aseguramiento INNER JOIN incidentes ON aseguramiento.aseplaca =
incidentes.inciplaca
WHERE incidentes.incicantheridos=1;

Ejemplo.
CALL mostrarIncidente;

• Visualizar los incidentes del vehículo con placas " FLL420", este
reporte debe visualizar la fecha, el lugar, la cantidad de heridos del
incidente, la fecha de inicio la de expiración de la póliza y el valor
asegurado.

CREATE PROCEDURE mostrarIncidentePlaca()


SELECT incidentes.inciplaca, incidentes.incifecha, incidentes.incifecha,
incidentes.incilugar, incidentes.incicantheridos,
aseguramiento.asefechaexpiracion, aseguramiento.asevalorasegurado
FROM aseguramiento INNER JOIN incidentes ON aseguramiento.aseplaca =
incidentes.inciplaca
WHERE incidentes.inciplaca="FLL420";

CALL mostrarIncidentePlaca;

4. Realice las Siguientes funciones en MySQL:

• Cuente el número de estudiantes cuya edad sea mayor a 22.


DELIMITER //
CREATE FUNCTION mostrarMayores()
RETURNS varchar(100)
BEGIN
DECLARE cantidad int;
SELECT COUNT(*) INTO cantidad FROM ESTUDIANTE WHERE edad_est > 22;
RETURN cantidad;
END; //
DELIMITER ;

Ejemplo
SELECT mostrarMayores();

• Muestre el nombre y la edad del estudiante más joven.


DELIMITER //
CREATE FUNCTION mostrarEstudianteMasJoven()
RETURNS varchar(100)
BEGIN
DECLARE nombre varchar(100);
SELECT concat_ws(' ',nom_est, ape_est,' Edad ', MIN(edad_est)) INTO nombre FROM
estudiante WHERE edad_est = (select MIN(edad_est) from estudiante);
RETURN nombre;
END; //
DELIMITER ;
Ejemplo.
SELECT mostrarEstudianteMasJoven();
• Calcule el valor promedio de los cursos cuyas horas sean mayores a
40.

DELIMITER //
CREATE FUNCTION valorPromedio()
RETURNS int(11)
BEGIN
DECLARE valor int(11);
SELECT AVG(valor_curs) AS ' Promedio del valor del curso' into valor FROM curso
WHERE horas_curs > 40;
RETURN valor;
END; //
DELIMITER ;

Ejemplo:

SELECT valorPromedio();

• Obtener el sueldo promedio de los profesores de la categoría 1.

DELIMITER //
CREATE FUNCTION sueldoPromedioProfesorCat1()
RETURNS int(11)
BEGIN
DECLARE sueldo int(11);
SELECT AVG(sal_prof) into sueldo FROM profesor WHERE cate_prof = 1;
RETURN sueldo;
end; //
DELIMITER ;

Ejemplo;
SELECT sueldoPromedioProfesorCat1();

• Muestre el nombre del profesor con menor sueldo.


DELIMITER //
CREATE FUNCTION profesorMenorSueldo ()
RETURNS varchar(100)
BEGIN
DECLARE menor int(10);
SELECT MIN(sal_prof) into menor FROM profesor;
RETURN menor;
END; //
DELIMITER ;
Ejemplo:
SELECT profesorMenorSueldo();

5. Realice las Siguientes funciones en ORACLE:

• Visualizar el nombre del cliente, la fecha y el valor del pedido más


costoso.
create or replace function VERCLIENTEPEDIDOMASCOSTOSO
return varchar2
as
datos varchar2(255);
begin
SELECT fec_ped || ' || ' || cliente.nom_cli ||' || ' || VAL_PED INTO datos
FROM PEDIDO INNER JOIN cliente ON PEDIDO.id_cli_ped = cliente.id_cli WHERE VA
L_PED = (SELECT MAX(VAL_PED) FROM PEDIDO);
RETURN datos;
end;

EJEMPLO:
SELECT VERCLIENTEPEDIDOMASCOSTOSO FROM DUAL;

• Mostrar cuantos artículos se tienen de cada editorial.

create or replace function ARTICULOSXEDITORIAL


(
EDITORIAL VARCHAR2
-- El nombre de la editorial se le pasa por parametros
-- Para nuestro caso Alfaomega - Rama, Alfaomega, Alfaomega Rama
)
return NUMBER
as
datos number;
begin
SELECT COUNT(articulo.edi_art) INTO DATOS
FROM articulo WHERE EDI_ART = 'Alfaomega - Rama';
RETURN datos;
end;

Ejemplo:
SELECT COUNT(articulo.edi_art)
FROM articulo WHERE EDI_ART = 'Alfaomega - Rama';

• Visualizar todos los datos de la póliza más costosa.

create or replace function POLIZAMASCOSTOSA

return varchar2
as
datos varchar(400);
begin

SELECT (asecodigo || ' || '|| asefechainicio|| ' || '||asefechaexpiracion|| ' || '


||asevalorasegurado|| ' || '||aseestado|| ' || '||asecosto|| ' || '||aseplaca) INTO DATOS
FROM aseguramiento WHERE asevalorasegurado = (SELECT MAX(asevalorasegurado)
from aseguramiento);
RETURN datos;
end;

Ejemplo:
select POLIZAMASCOSTOSA from dual;

• Visualizar los incidentes con el mínimo número de autos involucrados,


de este incidente visualizar el estado de la póliza y el valor asegurado.
create or replace function INCIDENTESMENORNUMAUTOS

return varchar2
as
datos varchar(400);
begin
SELECT aseestado ||' || ' ||asevalorasegurado||' || ' || incicanautosinvolucrados INTO
DATOS
FROM aseguramiento INNER JOIN incidentes ON aseguramiento.aseplaca =
incidentes.inciplaca
where incicanautosinvolucrados = (select min(incicanautosinvolucrados) from incidentes);
RETURN datos;
end;

Ejemplo:
SELECT INCIDENTESMENORNUMAUTOS FROM DUAL;

• Visualizar los datos de la póliza cuyo valor asegurado es el más


costoso, este reporte además de visualizar todos los datos de la póliza,
debe presentar todos los datos del vehículo que tiene dicha póliza.

create or replace function POLIZAMASCOSTOSA

return varchar2
as
datos varchar(400);
begin

SELECT asefechainicio ||' || '|| asefechaexpiracion||' || '||aseestado||' || '||aseplaca||'


|| '||automarca||' || '||automodelo||' || '||autonumpasajeros||' || '||autocilindraje||'
|| '||autonumchasis||' || '||asevalorasegurado
INTO DATOS FROM aseguramiento inner join automotor on aseplaca = autoplaca WH
ERE asevalorasegurado = (SELECT MAX(asevalorasegurado) FROM aseguramiento);
RETURN datos;
end;

Ejemplo:
SELECT POLIZAMASCOSTOSA FROM DUAL;
6. Construya los siguiente disparadores para controlar la actualización y
borrado de registros

• En MySQL; para las tablas Profesor, Curso, Estudiante.

Profesor:

• En ORACLE; para las tablas Cliente, Articulo, Pedido.

• En el Motor de su preferencia (ORACLE O MySQL), para las tablas,


Automotores, Aseguramientos, Incidentes.
7. Genere el script de la base de datos en un archivo bloc de notas con
extensión txt cuyo nombre debe ser
Solucion_Laboratorio_LenguajeTransaccional.txt.

5. EVIDENCIAS
Documento en formato txt con el nombre Solucion_Laboratorio_SQL que
contenga el código SQL para la construcción y manipulación de las Bases
de Datos solicitadas en el presente laboratorio y que permita obtener los
resultados solicitados.

Vous aimerez peut-être aussi