Está en la página 1de 2

create or replace function f_suma(var1 number, var2 number)

return number
is
total number(8,2);
begin
total := var1+var2;
return total;

end;

begin
dbms_output.PUT_LINE('LA SUMA TOTAL DE DOS NUMEROS ES:'||f_suma(100,200));
end;

select FIRST_NAME,LAST_NAME,SALARY,COMMISSION_PCT,
f_suma(SALARY,COMMISSION_PCT) as salario_total

from EMPLOYEES
ORDER BY salario_total desc

CREATE OR REPLACE PROCEDURE P_Salario_Total(codigo in EMPLOYEES.EMPLOYEE_ID%TYPE)


IS
calcular_sal number(8,2);
nombre employees.FIRST_NAME%type;
BEGIN
/*LA CONCICION ES PARA ACTUALIZA Y DAR NUVAS SENTENCIAS DE UNA TABLA */
UPDATE EMPLOYEES
SET COMMISSION_PCT=0
WHERE COMMISSION_PCT IS NULL AND EMPLOYEE_ID=codigo ;

select FIRST_NAME, F_SUMA(SALARY,COMMISSION_PCT) into nombre, calcular_sal


from employees
where EMPLOYEE_ID=codigo;
/* llamada a la funcin F_suma */
dbms_Output.put_line('el salario total del empleado '||nombre||' incluyendo la
comisin ES :'|| calcular_sal);
/*ES LA EXCEPCION CUANDO NO SE ENCUENTRA EL CODIGO DEL EMPLEADO */
EXCEPTION
WHEN OTHERS THEN
SYS.DBMS_OUTPUT.PUT_LINE('ERROR, : '||SQLERRM);
END;

EXECUTE P_Salario_Total(5020);

CREATE OR REPLACE FUNCTION F_NOMBRE_EMPLEADO (COD_EMPLEADO NUMBER )


RETURN VARCHAR2
IS
NOMBRE_COMPLETO VARCHAR2(60);
BEGIN
SELECT FIRST_NAME ||','|| LAST_NAME INTO NOMBRE_COMPLETO
FROM EMPLOYEES
WHERE EMPLOYEE_ID=COD_EMPLEADO;
RETURN NOMBRE_COMPLETO;
/* SE DECLARA EL CODIGO PARA INGRESAR MEDIANTE TECLADO */
DECLARE
&CODIGO NUMBER (8);
/* SE HACE LA SENTENCIA PARA PODER HACER EL INGRESO POR TECLADO */
BEGIN DBMS_OUTPUT.PUT_LINE ('INGRESE CODIGO DEL EMPLEADO:'||
F_NOMBRE_COMPLETO(&CODIGO));
END;
/* ES LA SENTECNIA BAJO DECLARACION ANONIMO*/
SELECT EMPLOYEE_ID ,F_NOMBRE_EMPLEADO(EMPLOYEE_ID) AS NOMBRE_COMPLETO
FROM EMPLOYEES;

También podría gustarte