Tarea base de datos
“Lord of Highlands”
Ejercicio n° 3:
Implementar la función F_MONOP_JUG que retorna el porcentaje de recursos que un jugador posee, respecto del total disponible. Parámetros: nombre del jugador, nombre del recurso Se ejecuta así
CREATE OR REPLACE function F_MONOP_JUB (nombre_jugador in varchar2,nom_recurso in varchar2) return number is X number;
disp number;
cantnumber;
begin
select rec.disponibilidad, rj.cantidad into disp, cant from RECURSO rec, RECURSO_JUGADOR rj
where rec.nombre=nom_recurso and nombre_jugador=rj.jugador and rec.nombre=rj.recurso;
X:= 100* cant/disp;
RETURN X;
end;
CREATE OR REPLACE function F_MONOP_JUB (nombre_jugador in varchar2,nom_recurso in varchar2) return number is X number;
disp number;
cant number;
begin
selectrec.disponibilidad, rj.cantidad into disp, cant from RECURSO rec, RECURSO_JUGADOR rj
where rec.nombre=nom_recurso and nombre_jugador=rj.jugador and rec.nombre=rj.recurso;
X:= 100* cant/disp;
RETURN X;
end;
begin
dbms_output.put_line(f_monop_jub('pamela','Oro'));
end;
begin
dbms_output.put_line(f_monop_jub('pamela','Oro'));
end;
Salida
* Creé 2 variables de tipo number
*De las tablas RECURSO y RECURSO_JUGADOR, cuando la tupla cumple la condición de que :Nombre del jugador ingresado como parámetro sea igual al nombre del jugador de la tabla RECURSO_JUGADOR y que el nombre del recurso ingresado de parámetro es igual al nombre de la tabla RECURSO y que el nombre del recurso ingresado de parámetro sea igual al nombre de recurso de la tabla RECURSO_JUGADOR, si estase cumple de RECURSO ,seleccioné de la columna disponibilidad un dato y lo almacene en la variable disp, RECURSO_JUGADOR de la columna cantidad saque un dato y lo almacene en la variable cant.
* Con cant y disp calculo el porcentaje
X:= 100* cant/disp; (regla de 3)
Ejercicio n° 4:
Implementar la función F_CIUD_4TUN que retorna “S” o “N” dependiendo si en una ciudad existe al menosuna unidad de cada uno de los 4 tipos. Parámetros: nombre ciudad.
CREATE OR REPLACE function F_CIUD_4TUN (nombre_ciudad in varchar2) return varchar2 is R varchar2(3);
cursor TIPOS_U is select u.tipo from CIUDAD ciu, ELEMENTO e, UNIDAD u
where ciu.cant_unidades>=4 and ciu.nombre=e.ciudad and e.id_elem=u.id_elem and nombre_ciudad=ciu.nombre;
tipo1 UNIDAD.tipo%type;
soldado boolean;
obreroboolean;
medico boolean;
cientifico boolean;
begin
R:='N';
open TIPOS_U;
loop
fetch TIPOS_U into tipo1;
exit when TIPOS_U%NOTFOUND or R='S';
if(tipo1='Soldado')then soldado:=true;
elsif(tipo1='Medico')then medico:=true;
elsif(tipo1='Obrero')then obrero:=true;
elsif(tipo1='Cientifico')then cientifico:=true;
end if;
if (soldado and medico and obrero and cientifico)then R:='S';
end if;end loop;
close TIPOS_U;
RETURN R;
end;
CREATE OR REPLACE function F_CIUD_4TUN (nombre_ciudad in varchar2) return varchar2 is R varchar2(3);
cursor TIPOS_U is select u.tipo from CIUDAD ciu, ELEMENTO e, UNIDAD u
where ciu.cant_unidades>=4 and ciu.nombre=e.ciudad and e.id_elem=u.id_elem and nombre_ciudad=ciu.nombre;
tipo1 UNIDAD.tipo%type;
soldado boolean;
obrero boolean;
medicoboolean;
cientifico boolean;
begin
R:='N';
open TIPOS_U;
loop
fetch TIPOS_U into tipo1;
exit when TIPOS_U%NOTFOUND or R='S';
if(tipo1='Soldado')then soldado:=true;
elsif(tipo1='Medico')then medico:=true;
elsif(tipo1='Obrero')then obrero:=true;
elsif(tipo1='Cientifico')then cientifico:=true;
end if;
if (soldado and medico and obrero and cientifico)then R:='S';
end if;
end loop;
closeTIPOS_U;
RETURN R;
end;
Se ejecuta asíbegin
dbms_output.put_line(f_ciud_4tun('sincity'));
end;
begin
dbms_output.put_line(f_ciud_4tun('sincity'));
end;
Salida Negativa
Salida Positiva
Tuve que trabajar con cursores q me entregaran desde una selección de tablas que cumplían con una condiciones una tabla de la cual yo pudiera tener la lista de unidades que tenía una...
Regístrate para leer el documento completo.