viernes, 6 de enero de 2012

clase viernes 06 de enero del 2012

TRABAJAMOS CREANDO PROCEDIMIENTO Y FUNCIONES

para aquellos empleados que tengan mas de 5 propiedades se le agrega un bono segun el parametro.
pare eso creamos lo sig.




-- creamos el procedimiento
create or replace procedure bono2012 (pNumempleado in empleado.NUMEMPLEADO%type, pBono numeric:= 0.01)

is
-- declaramos las variables a ocupar
vSalario empleado.salario%type;
vTotprop numeric;

begin

select salario into vSalario --selecionamos el salario y lo guardamos en vsalrio
from empleado
where numempleado = pNumempleado;

select count(*) into vTotprop -- contamos las propiedades de los empleados y lo guardamos en vTotprop
from propiedad
where numempleado = pNumempleado;

if vTotprop >= 5 then -- vemos si vtotpro es mayor o igual a 5
update empleado
set salario = salario + salario*pBono

where numempleado =pNumempleado; --- aca terminamos de actualizar los valores de los empleados segun el bono

dbms_output.put_line ('empleado'||pnumempleado||'bono'||pBono||'aumento'||vSalario*pBono); -- imprimimos el resultado

else
dbms_output.put_line ('empleado'||pNumempleado||'no aplico bono'); -- imprimimos si no hay resultados

end if;

end bono2012; -- cerramos procedimiento


APLICAMOS BONO A EMPLEADO SL21
begin
bono2012('SL21',pBono => 0.05);

end;





CREAMOS FUNCION CUENTA PROPIEDADES
create or replace function cuentapropiedades (pNumepleado empleado.numempleado%type)

return number
is
vTotprop numeric; -- declaramos variable VTotprop

begin
select count(*) into vTotprop
from propiedad
where numepleado = pNumempleado;
return vTotprop;


exception
when no_data_found then
return 0;
when others then
return 0;

end



LLAMAMOS A LA FUNCION

SELECT cuantapropiedades('SL21') FROM dual




--- CREAMOS FUNCION DONDE AL INGRESAR UN NUMERO ENTREGA LA SUMA DE LOS RESTOS
create or replace function sumadijito(pNumero in number)
return number
is

num_aux number;
suma number;

begin
num_aux :=pNumero;
suma := 0;
while num_aux > 0 loop
suma :=suma + mod(num_aux,10);
num_aux := trunc (num_aux/10);
end loop;
return suma;
end;

LLAMAMOS A LA FUNCION
select sumadijito(125) from dual -- ingresamos el numero 125 entregando como resultado 8

No hay comentarios:

Publicar un comentario