viernes, 6 de enero de 2012

Clase Viernes 06-01-2012

Procedimientos

create or replace procedure bono2012 (pnumempleado in empleado.numempleado%type, pbono numeric:=0.01)
is
vsalario empleado.salario%type;
vtotprop numeric;
begin
    select salario into vsalario
    from empleado
    where numempleado=pnumempleado
    select count(*) into vtotprop
    from propiedad
    where numempleado=pnumempleado
    if vtotprop >=5 then
        update empleado
        set salario=salario+salario*pbono
        where numempleado=pnumempleado
        dbms_output.put_line('empleado' || pnumempleado || 'bono' || pbono || 'aumento' || vsalario*pbono);
    else
        dbms_output.put_line('empleado' || pnumempleado || "no aplica bono");
    end if
end

Para llamar al procedimiento:

begin
    bono2012('SL21',0.03);
end

Procedimientos:
formal: es el que usa en la creacion.
real: es el que usa para llamarlo.

Funciones
create or replace function cuentapropiedades(pnumempleado empleado.numempleado%type)
return number;
is
vtotprop numeric;
begin 
    select count(*) into vtotprop
    from propiedad
    where numempleado=pnumempleado
    return vtotprop;
end


select cuenta propiedad ('SL21') from dual;

create or replace function sumadigitos (pnumero integer)
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;

No hay comentarios: