Beruflich Dokumente
Kultur Dokumente
de Datos
1. Construya los siguientes procedimientos Almacenados para insercin de
registros:
En MySQL; para las tablas Profesor, Curso, Estudiante, Estudiantexcurso.
Create procedure colegio() Select * from profesor, curso, estudiante, estudiante
xcurso;
call colegio();
En ORACLE; para las tablas Cliente, Articulo, Pedido.
Create or replace PROCEDURE negocios(unos out SYS_REFCURSOR)
as
BEGIN
OPEN unos FOR
SELECT *
FROM cliente, articulo, pedido;
END negocios;
En el Motor de su preferencia (ORACLE O MySQL), para las tablas, Compaa,
TiposAutomotores, Automotores, Aseguramientos, Incidentes.
Create procedure seguros() Select * from compaia, tiposautomotores, automot
ores, aseguramientos, incidentes;
call seguros();
2. En Oracle construya los procedimientos almacenados para realizar los
siguientes procesos:
Muestre los salarios de los profesores ordenados por categora.
create or replace PROCEDURE salarioprofesor(uno out SYS_REFCURSOR)
as
BEGIN
OPEN uno FOR
SELECT sal_prof
FROM profesor ORDER BY cate_prof;
END salarioprofesor;
Muestre los cursos cuyo valor sea mayor a $500.000.
Create or replace PROCEDURE valorcurso(uno out SYS_REFCURSOR)
as
BEGIN
OPEN uno FOR
SELECT nom_curs
FROM curso WHERE valor_cur>='500000';
END valorcurso;
Visualizar el nombre, apellido y direccin de todos aquellos clientes que hayan
realizado un pedido el da 25 /02/2012.
Create or replace PROCEDURE pedidos02252012(uno out SYS_REFCURSOR)
as
BEGIN
OPEN uno FOR
SELECT cliente.nom_cli, cliente.ape_cli, cliente.dir_cli
FROM cliente, pedido WHERE pedido.fec_ped='02/25/2012';
END pedidos02252012;
Listar todos los pedidos realizados incluyendo el nombre del artculo.
Create or replace PROCEDURE todospedidos(uno out SYS_REFCURSOR)
as
BEGIN
OPEN uno FOR
SELECT pedido.id_ped, pedido.id_cli_ped, pedido.fec_ped, pedido.val_ped,
articulo.tit_art
FROM pedido, articulo;
END todospedidos;
Listar los todos datos de los automotores cuya pliza expira en octubre de 2013,
este reporte debe visualizar la placa, el modelo, la marca, nmero de pasajeros,
cilindraje nombre de automotor, el valor de la pliza y el valor asegurado.
Create or replace PROCEDURE polizaoctubre(uno out SYS_REFCURSOR)
as
BEGIN
OPEN uno FOR
SELECT automotores.autoplaca, automotores.automodelo,
automotores.automarca, automotores.autonumpasajeros,
automotores.autocilindraje, automotores.autotipo, aseguramientos.asecosto,
aseguramientos.asevalorasegurado
FROM automotores, aseguramientos
WHERE aseguramientos.asefechaexpiracion>'09/30/2013' AND
aseguramientos.asefechaexpiracion<'11/01/2013';
END polizaoctubre;
Calcule el valor promedio de los cursos cuyas horas sean mayores a 40.
CREATE FUNCTION `valorpromedio`(`input` INT) RETURNS INT(11) NOT DE
TERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN DECLARE
promedio int; SELECT AVG(valor_cur) INTO promedioFROM curso WHERE ho
ras_cur>='40'; RETURN promedio; END
SELECT `valorpromedio`(@p0) AS `valorpromedio`;
Obtener el sueldo promedio de los profesores de la categora 1.
CREATE FUNCTION `sueldopromedio`(`input` INT) RETURNS INT(11) NOT D
ETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN DECLAR
E promedio int; SELECT AVG(sal_prof) INTO promedioFROM profesor WHER
E cate_prof='1'; RETURN promedio; END
SELECT `sueldopromedio`(@p0) AS `sueldopromedio`;
Muestre el nombre del profesor con menor sueldo.
CREATE FUNCTION `menorsueldo`(`inout` INT) RETURNS VARCHAR(30) N
OT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN DEC
LARE nombre varchar(30);SELECT nom_prof INTO nombre FROM profesor wh
ere sal_prof=(select min(sal_prof) from profesor); RETURN nombre; END
SELECT `menorsueldo`(@p0) AS `menorsueldo`;
Borrado
Profesor
CREATE TRIGGER `profesordelete` AFTER DELETE ON `profesor` FOR EAC
H ROW INSERT INTO trigger_profesores (DocumentoAnterior, NombreAnterior
, ApellidoAnterior, CategoriaAnterior,SalarioAnterior, DocumentoNuevo, Nombr
eNuevo, ApellidoNuevo, CategoriaNuevo, SalarioNuevo) VALUES (OLD.doc_pr
of, OLD.nom_prof, OLD.ape_prof, OLD.cate_prof, OLD.sal_prof);
Curso
CREATE TRIGGER `cursodelete` AFTER DELETE ON `curso` FOR EACH RO
W INSERT INTO trigger_cursos(CodigoAnterior, NombreAnterior, HorasAnterio
r, ValorAnterior, CodigooNuevo,NombreNuevo,HorasNuevo, ValorNuevo) VAL
UES (OLD.cod_curs, OLD.nom_curs, OLD.horas_cur, OLD.valor_cur);
Estudiante
CREATE TRIGGER `estudiantedelete` AFTER DELETE ON `estudiante` FOR
EACH ROW INSERT INTO trigger_estudiante (DocumentoAnterior,NombreAnt
erior, ApellidoAnterior, EdadAnterior, DocumentoNuevo, NombreNuevo, Apellid
oNuevo, EdadNuevo) VALUES (OLD.doc_est, OLD.nom_est, OLD.ape_est, OL
D.edad_est)
En ORACLE; para las tablas Cliente, Articulo, Pedido.
Actualizacin:
Cliente
create or replace trigger "CLIENTEUPDATE"
BEFORE
update on "CLIENTE"
for each row
begin
INSERT INTO trigger_cliente (CodigoAnterior, NombreAnterior, ApellidoAnterior,
DireccionAnterior,DepartamentoAnterior, MesCumpleAnterior, CodigoNuevo,
NombreNuevo, ApellidoNuevo, DireccionNuevo, DepartamentoNuevo,
MesCumpleNuevo) VALUES (:OLD.id_cli, :OLD.nom_cli, :OLD.ape_cli,
:OLD.dir_cli, :OLD.dep_cli, :OLD.mes_cum_cli, :NEW.id_cli,
:NEW.nom_cli, :NEW.ape_cli, :NEW.dir_cli, :NEW.dep_cli,
:NEW.mes_cum_cli);
end;
Articulo
create or replace trigger "ARTICULOUPDATE"
BEFORE
update on "ARTICULO"
for each row
begin
INSERT INTO trigger_articulo (CodigoAnterior, NombreAnterior, AutorAnterior,
EditorialAnterior, PrecioAnterior, CodigoNuevo, NombreNuevo, AutorNuevo,
EditorialNuevo, PrecioNuevo) VALUES (:OLD.id_art, :OLD.tit_art, :OLD.aut_art,
:OLD.edi_art, :OLD.prec_art, :NEW.id_art, :NEW.tit_art, :NEW.aut_art,
:NEW.edi_art, :NEW.prec_art);
end;
Pedido
create or replace trigger "PEDIDOUPDATE"
BEFORE
update on "PEDIDO"
for each row
begin
INSERT INTO trigger_pedido (CodigoAnterior, DocumentoClienteAnterior,
FechaAnterior, ValorAnterior, CodigoNuevo, DocumentoClienteNuevo,
FechaNuevo, ValorNuevo) VALUES (:OLD.id_ped, :OLD.id_cli_ped,
:OLD.fec_ped, :OLD.val_ped, :NEW.id_ped, :NEW.id_cli_ped, :NEW.fec_ped,
:NEW.val_ped);
end;
Borrado
Cliente
create or replace trigger "CLIENTEDELETE"
AFTER
delete on "CLIENTE"
for each row
begin
INSERT INTO trigger_cliente (CodigoAnterior, NombreAnterior, ApellidoAnterior,
DireccionAnterior,DepartamentoAnterior, MesCumpleAnterior, CodigoNuevo,
NombreNuevo, ApellidoNuevo, DireccionNuevo, DepartamentoNuevo,
MesCumpleNuevo) VALUES (:OLD.id_cli, :OLD.nom_cli, :OLD.ape_cli,
:OLD.dir_cli, :OLD.dep_cli, :OLD.mes_cum_cli);
end;
Articulo
create or replace trigger "ARTICULODELETE"
AFTER
delete on "ARTICULO"
for each row
begin
INSERT INTO trigger_articulo (CodigoAnterior, NombreAnterior, AutorAnterior,
EditorialAnterior, PrecioAnterior, CodigoNuevo, NombreNuevo, AutorNuevo,
EditorialNuevo, PrecioNuevo) VALUES (:OLD.id_art, :OLD.tit_art, :OLD.aut_art,
:OLD.edi_art, :OLD.prec_art);
end;
Pedido
create or replace trigger "PEDIDODELETE"
AFTER
delete on "PEDIDO"
for each row
begin
INSERT INTO trigger_pedido (CodigoAnterior, DocumentoClienteAnterior,
FechaAnterior, ValorAnterior, CodigoNuevo, DocumentoClienteNuevo,
FechaNuevo, ValorNuevo) VALUES (:OLD.id_ped, :OLD.id_cli_ped,
:OLD.fec_ped, :OLD.val_ped);
end;
En el Motor de su preferencia (ORACLE O MySQL), para las tablas,
Automotores, Aseguramientos, Incidentes.
Actualizacin:
Automotores
CREATE TRIGGER `automotoresupdate` BEFORE UPDATE ON `automotores
` FOR EACH ROW INSERT INTO trigger_automotores (PlacaAnterior, MarcaA
nterior, TipoAnterior, ModeloAnterior,NumeroPasajerosAnterior, CilindrajeAnteri
or, NumeroChasisAnterior, PlacaNuevo, MarcaNuevo, TipoNuevo, ModeloNuev
o, NumeroPasajerosNuevo, CilindrajeNuevo, NumeroChasisNuevo)VALUES (O
LD.autoplaca, OLD.automarca, OLD.autotipo, OLD.automodelo, OLD.autonump
asajeros, OLD.autocilindraje, OLD.autonumchasis, NEW.autoplaca, NEW.auto
marca, NEW.autotipo,NEW.automodelo, NEW.autonumpasajeros, NEW.autocili
ndraje, NEW.autonumchasis)
Aseguramientos
CREATE TRIGGER `aseguramientosupdate` BEFORE UPDATE ON `asegura
mientos` FOR EACH ROW INSERT INTO trigger_aseguramientos(CodigoAnter
ior, FechaInicioAnterior,FechaExpiracionAnterior, ValorAseguradoAnterior, Esta
doAnterior, CostoAnterior, PlacaAnterior, CodigoNuevo, FechaInicioNuevo, Fec
haExpiracionNuevo, ValorAseguradoNuevo,EstadoNuevo, CostoNuevo, PlacaN
uevo) VALUES (OLD.asecodigo, OLD.asefechainicio, OLD.asefechaexpiracion,
OLD.asevalorasegurado, OLD.aseestado, OLD.asecosto, OLD.aseplaca,NEW.
asecodigo, NEW.asefechainicio, NEW.asefechaexpiracion, NEW.asevaloraseg
urado, NEW.aseestado, NEW.asecosto, NEW.aseplaca)
Incidentes
CREATE TRIGGER `incidentesupdate` BEFORE UPDATE ON `incidentes` FO
R EACH ROW INSERT INTO trigger_incidentes(CodigoAnterior, FechaAnterior,
PlacaAnterior, LugarAnterior,CantidadHeridosAnterior, CantidadFatalidadesAnt
erior, CantidadAutosInvolucradosAnterior, CodigoNuevo, FechaNuevo, PlacaN
uevo, LugarNuevo, CantidadHeridosNuevo,CantidadFatalidadesNuevo, Cantida
dAutosInvolucradosNuevo) VALUES (OLD.incicodigo, OLD.incifecha, OLD.incip
laca, OLD.incilugar, OLD.incicantheridos, OLD.incicanfatalidades,OLD.incicana
utosinvolucrados, NEW.incicodigo, NEW.incifecha, NEW.inciplaca, NEW.incilug
ar, NEW.incicantheridos, NEW.incicanfatalidades, NEW.incicanautosinvolucrad
os)
Borrado
Automotores
CREATE TRIGGER `automotoresdelete` AFTER DELETE ON `automotores` F
OR EACH ROW INSERT INTO trigger_automotores (PlacaAnterior, MarcaAnte
rior, TipoAnterior, ModeloAnterior,NumeroPasajerosAnterior, CilindrajeAnterior,
NumeroChasisAnterior, PlacaNuevo, MarcaNuevo, TipoNuevo, ModeloNuevo,
NumeroPasajerosNuevo, CilindrajeNuevo, NumeroChasisNuevo)VALUES (OL
D.autoplaca, OLD.automarca, OLD.autotipo, OLD.automodelo, OLD.autonumpa
sajeros, OLD.autocilindraje, OLD.autonumchasis)
Aseguramientos
CREATE TRIGGER `aseguramientosdelete` AFTER DELETE ON `aseguramie
ntos` FOR EACH ROW INSERT INTO trigger_aseguramientos(CodigoAnterior,
FechaInicioAnterior,FechaExpiracionAnterior, ValorAseguradoAnterior, EstadoA
nterior, CostoAnterior, PlacaAnterior, CodigoNuevo, FechaInicioNuevo, FechaE
xpiracionNuevo, ValorAseguradoNuevo,EstadoNuevo, CostoNuevo, PlacaNuev
o) VALUES (OLD.asecodigo, OLD.asefechainicio, OLD.asefechaexpiracion, OL
D.asevalorasegurado, OLD.aseestado, OLD.asecosto, OLD.aseplaca)
Incidentes