1. Enorable
  2. Base De Datos
  3. Oracle
1
0
 
vistas: 656
Joswald Oropeza
| 05/11/2019

Función de Oracle para calcular porcentajes

Crear una función de Oracle que permita calcular porcentajes a un número cualquiera mediante la implementación de una operación matemática sencilla.

Esta función de usuario recibe dos argumentos de tipo número (p_porc y p_num), los cuales hacen referencia al valor del porcentaje que queremos calcular sobre un valor numérico dado. La misma debe retornar un número como resultado de la operación matemática.

En el caso de ocurrir un error no previsto, la función ejecutará una excepción que retornará el valor cero (0).

Función probada en la versión 19C de la base de datos Oracle.

Para más recursos relacionados en PL/SQL de Oracle, puede apoyar mi contribución en esta categoría realizando una donación (BTC) desde su billetera preferida.
CREATE OR REPLACE FUNCTION F_PORCENTAJE ( p_porc IN NUMBER, p_num IN NUMBER )
RETURN NUMBER
IS
/*
*******************************************************************************************
* Función: f_porcentaje
* Descripción: Calcula el porcentaje de un número pasado como argumento
* Parámetros: p_porc el valor del porcentaje a aplicar
* p_num el número al cual se aplicará el porcentaje requerido
* Retorna: v_return resultado del valor calculado
*******************************************************************************************
*/
v_return NUMBER;
BEGIN
/* Calcular el porcentaje de un número pasado como parámetro */
SELECT ( ( p_num * p_porc ) / 100 )
INTO v_return
FROM DUAL;
return v_return;
EXCEPTION
WHEN OTHERS
THEN
return 0;

END F_PORCENTAJE;
/

A continuación procedemos a probar el correcto funcionamiento de esta función que busca calcular un porcentaje aplicado sobre un valor numérico, mediante la corrida de una simple sentencia SQL.

/* Ejecutar la función mediante sentencia sql */
SELECT F_PORCENTAJE ( 50, 100) FROM DUAL;

Resultado:
F_PORCENTAJE(50,100)
50

De igual manera podemos probar la función a través de la implementación de un bloque PL/SQL, donde previamente asignaremos valores a dos variables declaradas para que sirvan de operandos en el manejo de la función que hemos creado.
DECLARE
/* Corrida de la función a través de un bloque PL/SQL
* Se definen previamente dos variables (v_a y v_b) como operandos para la función
*/
v_a NUMBER := 50; -- parámetro 1: el porcentaje a aplicar
v_b NUMBER := 1000; -- parámetro 2: el número al que aplicar porcentaje
v_return NUMBER := 0; -- valor returnado

BEGIN
/* Ejecutar la función para calcular el 50% de 1000 */
SELECT F_PORCENTAJE ( v_a, v_b )
INTO v_return
FROM dual;

DBMS_OUTPUT.PUT_LINE('El '|| v_a||'% de '||v_b||' es igual a: '||v_return);

END;
/
Statement processed.
El 50% de 1000 es igual a: 500


Todos los titulares en un solo lugar...