Professional Documents
Culture Documents
sea)
Gua Practica
1. Construya un programa que al ingresar el cdigo de un empleado imprima el da de la
semana que fue contratado. Luego a partir del nmero de su cdigo seleccione de esta
forma
ABC C debe mostrar el nombre del da, B-El nombre del mes y C mostrara (1 2011, 2
2012, etc.)
Por ejemplo: al ingresar 123 debe mircoles, febrero, 2011.
set serveroutput on
declare
x employees%rowtype;
cod number:=&ingrese_codigo;
dia varchar2(15);
mes number;
mes2 varchar2(15);
anho varchar2(4);
begin
select
to_char(hire_date,'Day'),TO_NUMBER(to_char(hire_date,'mm'),'99')
to_char(hire_date,'yyyy') into dia,mes,anho from employees where employee_id=cod;
CASE mes
WHEN 1 THEN mes2 :='ENERO';
WHEN 2 THEN mes2 :='FEBRERO';
WHEN 3 THEN mes2 :='MARZO';
WHEN 4 THEN mes2 :='ABRIL';
WHEN 5 THEN mes2 :='MAYO';
WHEN 6 THEN mes2 :='JUNIO';
WHEN 7 THEN mes2 :='JULIO';
WHEN 8 THEN mes2 :='AGOSTO';
WHEN 9 THEN mes2 :='SETIEMBRE';
WHEN 10 THEN mes2 :='OCTUBRE';
WHEN 11 THEN mes2 :='NOVIEMBRE';
WHEN 12 THEN mes2 :='DICIEMBRE';
END CASE;
DBMS_OUTPUT.PUT_LINE(dia ||','||mes2||','||anho);
end;
2. Construya un programa que al ingresar un nmero entero que indique el mes (debe
validar que ingrese entre 1 y 12), nos muestre cuantos das tiene dicho mes.
set serveroutput on
declare
x employees%rowtype;
cod number:=&ingrese_numes;
dias number;
mes number;
mes2 varchar2(20);
begin
mes:=cod;
CASE mes
WHEN 1 THEN mes2 :='ENERO';
dias:=31;
DBMS_OUTPUT.PUT_LINE(dias ||','||mes2);
WHEN 2 THEN mes2 :='FEBRERO';
dias:=29;
DBMS_OUTPUT.PUT_LINE(dias ||','||mes2);
WHEN 3 THEN mes2 :='MARZO';
dias:=31;
DBMS_OUTPUT.PUT_LINE(dias ||','||mes2);
WHEN 4 THEN mes2 :='ABRIL';
dias:=30;
DBMS_OUTPUT.PUT_LINE(dias ||','||mes2);
WHEN 5 THEN mes2 :='MAYO';
dias:=31;
DBMS_OUTPUT.PUT_LINE(dias ||','||mes2);
WHEN 6 THEN mes2 :='JUNIO';
dias:=30;
DBMS_OUTPUT.PUT_LINE(dias ||','||mes2);
WHEN 7 THEN mes2 :='JULIO';
dias:=31;
DBMS_OUTPUT.PUT_LINE(dias ||','||mes2);
WHEN 8 THEN mes2 :='AGOSTO';
dias:=31;
DBMS_OUTPUT.PUT_LINE(dias ||','||mes2);
WHEN 9 THEN mes2 :='SETIEMBRE';
dias:=30;
DBMS_OUTPUT.PUT_LINE(dias ||','||mes2);
WHEN 10 THEN mes2 :='OCTUBRE';
dias:=31;
DBMS_OUTPUT.PUT_LINE(dias ||','||mes2);
WHEN 11 THEN mes2 :='NOVIEMBRE';
dias:=30;
DBMS_OUTPUT.PUT_LINE(dias ||','||mes2);
WHEN 12 THEN mes2 :='DICIEMBRE';
dias:=31;
DBMS_OUTPUT.PUT_LINE(dias ||','||mes2);
else DBMS_OUTPUT.PUT_LINE('No existe ');
END CASE;
end;
4. Construya un programa que al ingresar una fecha (da, mes y ao) nos indique si la
fecha ingresada es correcta o no (validar fechas).
set serveroutput on
declare
numdia number:=&ingrese_dia;
nummes number:= &ingrese_mes;
numanio number:=&ingrese_anio;
dia number;
mes number;
anio number;
decision number;
begin
dia:=numdia;
mes:=nummes;
anio:=numanio;
decision:=0;
CASE nummes
WHEN 1 THEN
if numdia<32 then
decision:=1;
end if;
WHEN 2 THEN
if mod(anio,4)<>0 then
if numdia<30 then
decision:=1;
end if;
else
if numdia<29 then
decision:=1;
end if;
end if;
WHEN 3 THEN if numdia<32 then
decision:=1;
end if;
WHEN 4 THEN
if numdia<31 then
decision:=1;
end if;
WHEN 5 THEN
if numdia<32 then
decision:=1;
end if;
WHEN 6 THEN if numdia<31 then
decision:=1;
end if;
WHEN 7 THEN if numdia<32 then
decision:=1;
end if;
WHEN 8 THEN if numdia<32 then
decision:=1;
end if;
WHEN 9 THEN if numdia<31 then
decision:=1;
end if;
WHEN 10 THEN if numdia<32 then
decision:=1;
end if;
WHEN 11 THEN if numdia<31 then
decision:=1;
end if;
WHEN 12 THEN if numdia<32 then
decision:=1;
end if;
END CASE;
if decision<>1 then
DBMS_OUTPUT.PUT_LINE('fecha invalida');
else
DBMS_OUTPUT.PUT_LINE('fecha valida');
end if;
end;
5. Una compaa de seguros ofrece a sus clientes cuatro tipos de seguro de sepelio:
Tipo
A
B
C
D
Aos de servicio
10 a mas
8a9
6a7
0a5
Muestre el reporte personal del empleado indicando el monto mensual que tiene que
pagar, indique el sueldo a percibir luego de descuentos, usted debe ingresar la cantidad
de dependientes (asegurados) y el cdigo del empleado
SET SERVEROUTPUT ON
declare
x employees%rowtype;
nombreJ x.first_name%type;
apeJ x.last_name%type;
afiliados number:=&ingrese_numeroafiliados;
anios number;
descuento number;
categoria varchar2(3);
numafiliados number;
begin
numafiliados:=afiliados;
SELECT * into x FROM employees where employee_id=&ingrese_codigo;
anios:= round((sysdate-x.hire_date)/365,1);
if anios>10 then
categoria:='A';
elsif anios>8 then
categoria:='B';
elsif anios>6 then
categoria:='C';
elsif anios>0 then
categoria:='D';
end if;
case categoria
when 'A' then
if numafiliados>8 then
descuento:=40*(numafiliados-8);
end if;
when 'B' then
if numafiliados>6 then
descuento:=30*(numafiliados-6);
end if
;
when 'C' then
if numafiliados>4 then
descuento:=20*(numafiliados-4);
end if
;
when 'D' then
if numafiliados>2 then
descuento:=10*(numafiliados-2);
end if
;
end case;
DBMS_OUTPUT.PUT_LINE('DESCUENTO DE '||descuento);
DBMS_OUTPUT.PUT_LINE('SALARIO FINAL: '||x.salary-descuento);
end;
6. una empresa de carga brinda servicio a todas las regiones, la tarifa que cobra por cada
tonelada se muestra en el siguiente cuadro:
Destinos ($/tonelada)
Medio de transporte
Misma Regin
Diferente regin
Misma ciudad
Areo (A)
Martimo (M)
Terrestre (T)
30
25
20
Diferente
ciudad
35
30
25
50
45
40
Calcule los montos a cobrar por dicha empresa cuando un jefe (debe validar que sea
jefe) despache productos y sea recibido por otro empleado, los destinos los determina a
partir de la regin y ciudad del empleado que origina el servicio y del que lo recibe.
Muestre el reporte indicando a los responsables, ciudad, regin destino, origen, monto
a facturar, etc. recuerde que usted de indicar el medio y la cantidad de toneladas a
transportar
7. La empresa al inicio de contrato de cada empleado deposita la 3ra. parte del sueldo total
del empleado como bono especial cuando se retire de la empresa, el empleado al inicio
de contrato indica el tipo de moneda. El banco donde est depositado dicho bono
realiza el pago de intereses a sus clientes por un deposito a plazo fijo de acuerdo a la
siguiente informacin: Tipo de moneda, Tiempo de deposito y monto depositado. Los
intereses sern aplicados segn el siguiente cuadro:
aos