You are on page 1of 7

Programas PLSQL Estructuras Selectivas (Segn

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;

3. Construya una calculadora que lea 2 nmeros y un operador y efecte la operacin


indicada (suma, resta, multiplicacin y divisin).
set serveroutput on
declare
n1 number:=&ingrese_numero1;
n2 number:=&ingrese_numero2;
op char(1):=&ingrese_operador;
valor number;
begin
case op when '+' then
valor:=numero1+numero2;
when '*' then
valor:=numero1*numero2;
when '-' then
valor:=numero1-numero2;
when '/' then
valor:=numero1/numero2;
end case;
DBMS_OUTPUT.PUT_LINE('Resultado: ' ||valor);
DBMS_OUTPUT.PUT_LINE('***************************************************' );
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

Mximo nmero de Personas


8
6
4
2

Pago mensual (S/.)


40
30
20
10

Si el cliente asegura a ms personas de la indicadas en el cuadro anterior tendr que


pagar S/.8.00 mensuales por cada persona adicional si es que el seguro es de tipo A o B,
y S/.5.00 mensuales por cada persona adicional si es que el seguro es de tipo C o D.
Los tipos de seguro estn en funcin a las categoras de los empleados, se sabe que las
categoras se definen a partir de:
Categora
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

Soles (%) Dlares (%)


mensual
mensual
05
5
2
6 12
6
4
13 mas
9
7
Si algn empleado fuera despedido o renunciara en este momento, muestre el reporte
personal de dicho empleado donde se muestre el inters y el monto total a recibir por todos
los aos de servicio, indique el tipo de moneda, los aos de servicio, etc.
8. Un supermercado ofrece a sus clientes descuentos de acuerdo al monto de compra,
como se muestra en el siguiente cuadro:
Compra (S/.)
Descuento (%)
0 250
0
251 500
5
501 1000
10
1001 ms
15
Para recibir los beneficios de descuento un cliente solo puede comprar dentro de un
determinado rubro, as mismo dependiendo del rubro de la compra, se le aplica el
siguiente impuesto sobre la compra descontada.
Rubro
Impuesto (%)
Comestibles
15
Juguetes
20
Construir un programa que calcule el pago total que har un determinado cliente si se
sabe que este supermercado pasa dicha informacin a la empresa del empleado para
que esta se descuente en su boleta a fin de mes. Muestre el reporte donde se indique el
total de la compra, descuentos, rubros, total a facturar, neto a recibir, etc.
9. Una tienda de venta de polos ha establecido porcentajes de descuento, indicados a
continuacin, de acuerdo a las caractersticas de la prenda: Tipo de algodn (Simple,
Pima), Tipo de prensa (Nio, Joven, Adulto), Detalle de la prenda (Sin estampado, Con
estampado)
Nio
Joven
Adulto
Tipo de algodn
S
C
S
C
S
C
Simple
3
5
4
6
5
7
Pima
5
3
6
4
7
5
Calcular el importe a pagar por una prenda. Si se sabe que igual se le descontara al
empleado por planilla. Muestre el reporte donde se indique el total de la compra, total a
facturar, neto a recibir, etc.
10. Un centro comercial ofrece ventas financiadas por 3 tipos de tarjetas de crdito como
indica a continuacin:
Max. Letras
Tipo de Tarjeta
Inters (%)
12
A
5
8
B
10
6
C
15
El cliente solo puede financiar una compra hasta el mximo de letras que se indica en el
cuadro anterior, en caso contrario la venta no debe proceder. Calcular el monto de cada
letra por pagar as como el monto total.
Al igual que los ejercicios anteriores se le descontara por planilla al empleado, para
ellos se debe tener en cuenta si el total a pagar mensual es mayor al 50% del sueldo de
dicho empleado no se ejecuta la venta. Calcule el monto a pagar y los descuentos que
tendr el empleado. Muestre el reporte con detalles del caso.

You might also like