Como comenté en el artículo anterior, una de las nuevas características de la base de datos Oracle 23c, es la posibilidad de crear procedimientos almacenados Javascript. Para conocer un poquito más al respecto, estaré compartiendo temas relacionados al mismo.
Voy a iniciar con la definición de funciones Javascript públicas y privadas.
Cuando creamos procedimientos almacenados Javascript, tenemos la oportunidad de definir funciones que dependiendo de la manera en que lo hagamos van a ser consideradas como funciones públicas o funciones privadas.
La principal diferencia entre una función pública y una privada, es que al hacer el llamado a dichas funciones, solo podremos hacerlo directamente sobre las funciones públicas, las funciones privadas solo podrán ser llamadas desde dentro del contexto del módulo Javascript que hemos creado.
Para explicar el concepto veamos el código a continuación:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
CREATE MLE MODULE pub_priv_factorials LANGUAGE JAVASCRIPT AS function factorial(num) { if ( num < 0 ) { return -1; } else if ( num == 0 ) { return 1; } else { return ( num * factorial( num - 1 ) ); } } function calculateFactorial(startWith) { console.log('Vamos a calcular el factorial de ${startWith}`) const result = factorial(startWith) console.log(`El factorial de ${startWith} es ${result}`) } export { calculateFactorial } / |
El código anterior crea un módulo Javascript almacenado en la base de datos con el nombre pub_priv_factorials, tal como se define en la línea 1.
Las líneas 3 a 11, definen la función factorial, la cual recibe como parámetro un número y retorna el factorial del número proporcionado, por aquello de que no sepamos que es un factorial, es el producto de todos los números positivos enteros desde uno hasta el número indicado.
En las líneas 13 a 17, se define una nueva función llamada calculateFactorial, la cual recibe como parámetro un número, digamos 5, muestra en consola el mensaje “Vamos a calcular el factorial de 5”, en la línea 14. Luego realiza el cálculo del factorial al llamar la función factorial definida en las líneas 3 a 11, para finalizar mostrando un nuevo mensaje “El factorial de 5 es 120”.
Les recuerdo que el contenido de cualquier línea que haga un llamado a console.log, cuando ejecutemos desde PL/SQL el llamada a estas funciones Javascript, será mostrado por medio de DBMS_OUTPUT.
Finalmente, la línea 19 define la función calculareFactorial como pública, al pasar el nombre de la función dentro de la sentencia export, estamos definiendo dicha función como pública, lo que nos permitirá acceder a ella directamente, mientras que en el caso de la función factorial, solo podrá ser llamada dentro de la función pública o cualquier otra función privada que haya sido llamada desde la función pública.
Conocer más
Si desean conocer más al respecto e investigar por su cuenta, les dejo estos enlaces que les pueden ayudar: