viernes, 6 de enero de 2012

Clase Viernes 6 de Enero

Preparacion para la prueba de mañana
sera prueba escrita y siguiendo el mismo estilo de la anterior, alternativas y desarrollo

Ejercicio 1

create or replace procedure bono2012 (Pnumemepleado in empleado.numempleado%type, pbono numeric)
is
vsalario empleado.salario%type;
vtotprop numeric;

begin
select salario into vsalario
from empleado
where numempleado = Pnumemepleado;
select count(*) into vtotprop
from propiedad
where numempleado = Pnumemepleado;
if vtotprop>=5 then
update empleado set salario = salario+salario*pbono
where numempleado = Pnumemepleado;
dbms_output.put_line('empleado 'Pnumemepleado' bono 'pbono' aumento 'vsalario*pbono);
else
dbms_output.put_line('empleado 'Pnumemepleado' No tiene bono');
end if;
end;

Para ejecutar el procedimiento se usa


begin
bono2012('SL21',0.03);
end;


crear funciones

para crearla se usa:

create or replace function cuentapropiedades (Pnumemepleado in empleado.numempleado%type)
return number
is
vtotprop numeric;

begin
select count(*) into vtotprop
from propiedad
where numempleado = Pnumemepleado;
return vtotprop;
end;


para ejecutar la funcion usamos:

select cuentapropiedades('SG37') from dual;


otra funcion que suma numeros (no entendi exactamente que es lo que hace)

create or replace function sumadigitos (Pnumero IN integer)
return number
is
suma number:=0;
num_aux number;

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

para llamarla se usa:

select sumadigitos(125) from dual;

No hay comentarios: