------------------------------------
:::: CREAR UN PROCEDIMIENTO :::
------------------------------------
CREATE OR REPLACE Procedure Bono2012(pNumEmpleado in Empleado.numempleado%type, pBono numeric:= 0.01)
Is
vSalario empleado.salario%Type;
vTotpropiedad numeric;
Begin
SELECT SALARIO into vSalario /* seguarda el salario en una variable */
FROM EMPLEADO
Where numempleado = pNumEmpleado;
/* Obtiene la cantidad de propiedades del empleado */
select count(*) into vTotpropiedad
From PROPIEDAD
Where numempleado = pNumEmpleado;
if vTotpropiedad >= 5 then
update EMPLEADO Set salario = salario * (1 + pBono)
Where numempleado = pNumEmpleado;
dbms_output.put_line('Empleado: ' || pNumEmpleado || ' Bono: ' || pBono || ' Aumento: ' || vSalario * pBono);
else
dbms_output.put_line('Empleado: ' || pNumEmpleado || ' no obtubo bono...');
end if;
End Bono2012;
*****************************************************************************
-> DEFINICIONES:
Parametro real: Es el valor que paso a mi funcion o procedimiento.
Ejemplo --> Bono2012('SL21')
Parametro formal: Es con el que defino la funcion o procedimiento
Ejemplo --> Bono2012(pNumEmpleado in Empleado.numempleado%type, pBono numeric:= 0.01)
*****************************************************************************
-> EJECUTAR PROCEDIMIENTO.
1.-
Begin
Bono2012('SL21'); /* sino se ingresa monto de bono se asume que es 0.01
end;
2.-
Begin
Bono2012('SL21', 006);
end;
3.-
Begin
Bono2012(pNumEmpleado =>'SL21');
end;
-> EJECUTAR PROCEDIMIENTO EN DISTINTOORDEN DE PARAMETROS.
1.-
Begin
Bono2012(pBono => 0.06, pNumEmpleado =>'SL21');
end;
2.-
Begin
Bono2012('SL21',pBono => 0.05);
end;
*****************************************************************************
*****************************************************************************
*****************************************************************************
------------------------------------
:::: CREAR UNA FUNCION :::
------------------------------------
create or replace function contar_propiedades(pNumEmpleado empleado.NumEmpleado%Type)
Return numeric IS
CantProp numeric;
Begin
Select Count(*) into CantProp
From Propiedad
Where NumEmpleado = pNumEmpleado;
Return CantProp;
Exception
When No_Data_Found Then
Return 0;
When others then
Return 0;
End contar_propiedades;
-> EJECUTAR UNA FUNCION:
1.- Select contar_propiedades('SL21') from dual;
2.-
Begin
dbms_output.put_line('la cantidad de propiedades es: ') || contar_propiedades('SL21');
End;
----> Crear function para sumar los digitos de un numero <------
Create or replace function suma_digitos(pnumero in numeric) return numeric is
num_aux numeric;
suma numeric;
Begin
num_aux:= pnumero;
While num_aux > 0 loop
suma:= + mod(num_Aux,10);
num_aux := trunc(num_aux / 10);
end loop;
Return suma;
End;
No hay comentarios:
Publicar un comentario