Hasta el momento, en esta serie de artículos sobre la funcionalidad de procedimientos almacenados Javascript en la nueva base de datos Oracle 23c, hemos visto:
- Uso de Javascript en Oracle 23c
- Oracle 23c funciones Javascript públicas y privadas
- Oracle 23c módulos Javascript usando bfile
- Oracle 23c versión y metadatos JSON en modulos Javascript
En este nuevo artículo, vamos a tratar el tema de cómom obtener información sobre los módulos Javascript desde el diccionario de datos de la base de datos.
Para esto, vamos a hacer uso de dos vistas específicas:
USER_SOURCE
La vista USER_SOURCE contiene las mismas columnas que ALL_SOURCE, con excepción de OWNER y describe el código fuente de los objetos almacenados para el usuario actual.
Las columnas de la vista son:
Columna | Tipo de Datos | NULA | Descripción |
---|---|---|---|
NAME |
VARCHAR2(128) |
NOT NULL |
Nombre del objecto |
TYPE |
VARCHAR2(12) |
Tipo de objecto: FUNCTION , JAVA SOURCE , PACKAGE , PACKAGE BODY , PROCEDURE , TRIGGER , TYPE , TYPE BODY |
|
LINE |
NUMBER |
NOT NULL |
Número de línea de esta línea de código fuente |
TEXT |
VARCHAR2(4000) |
Texto fuente del objeto almacenado | |
ORIGIN_CON_ID |
VARCHAR2(256) |
El ID del contenedor donde se originan los datos. Los valores posibles incluyen:
|
La línea de comando necesaria para mostrar el código fuente de un módulo para el usuario actual, es (recuerde que todos los ejemplos en las entregas anteriores los hemos realizado en el usuario TEST):
1 2 3 4 |
SELECT LINE, TEXT FROM USER_SOURCE WHERE NAME = 'MOD_NAME'; |
donde MOD_NAME en la línea 4 del comando, corresponde al nombre del módulo del cual desea obtener el código fuente.
Si lo que desea es saber los nombres de todos los módulos MLE para el usuario actual, el comando a utilizar es:
1 2 3 |
select distinct name from user_source where type = 'MLE MODULE'; |
Este comando generará una salida similar a la siguiente:
NAME
____________________
CUADRADO_MOD
HELLOWORLD_MODULE
HOLAMUNDO_MOD
En mi usuario de esquema de base de datos TEST, en este momento existen 3 módulos MLE con nombres CUADRADO_MOD, HELLOWORLD_MODULE y HOLAMUNDO_MOD.
Retomando el código de ejemplo inicial, si deseamos ver las líneas de código fuente del módulo CUADRADO_MOD, debemos ejecutar el comando:
1 2 3 |
select line, text from user_source where name = 'CUADRADO_MOD'; |
La salida de este comando mostrará algo similar a lo siguiente:
LINE TEXT
_______ ________________________________________________________________
1 function cuadrado(num) {
2 if(num == 0) {
3 console.log(‘El valor proporcionado es cero y no tiene un valor cuadrado.’);
4 } else {
5 console.log(num * num);
6 }
7 }
8
9 export { cuadrado }
9 rows selected.
Por un lado tenemos el número de cada línea de código, y por otro, el código Javascript de cada una de ellas.
USER_MLE_MODULES
La vista USER_MLE_MODULES describe los módulos Oracle Database Multilingual Engine (MLE) del usuario actual, contiene las mismas columnas que ALL_MLE_MODULES, a excepción de la columna MODULE_OWNER.
Su estructura es la siguiente:
Columna | Tipo de Datos | NULO | Descripción |
---|---|---|---|
|
|
|
Nombre del módulo MLE |
|
|
|
Número de objecto del módulo MLE |
|
|
|
Contenido del módulo MLE |
|
|
|
Dueño del lenguaje MLE del módulo MLE |
|
|
|
Nombre del lenguaje MLE del módulo MLE |
|
|
|
Número de versión del módulo MLE |
|
|
|
Metadatos del módulo MLE |
|
|
|
Tipo del módulo MLE:
|
Conociendo esto, si quisieramos obtener la información de nombre de módulo, versión y metadata de los módulos Javascript en nuestro esquema de base de datos, ejecutamos el comando:
1 2 |
select module_name, version, metadata from user_mle_modules; |
El resultado de ejecutar el comando anterior, nos debería mostrar una salida similar a la siguiente:
MODULE_NAME VERSION METADATA
____________________ __________ ___________
HOLAMUNDO_MOD
HELLOWORLD_MODULE
CUADRADO_MOD
En caso de que hallamos definido información de versión y metadatos, estos se mostrarían en las columnas 2 y 3 de la consulta.
Esta es otra forma de encontrar los nombres de los módulos MLE en nuestro esquema de base de datos.
USER_MLE_PROCEDURES
De la vista USER_MLE_PROCEDURES, podemos obtener información sobre los procedimientos PL/SQL definidos para llamar a los funciones y procedimientos definidos en los módulos MLE.
La estructura de esta vista es la siguiente:
Columna | Tipo de Datos | NULO | Descripción |
---|---|---|---|
|
|
|
Nombre del objeto de nivel superior
|
|
|
|
Nombre de la función o procedimiento
|
|
|
|
Número de objeto del objeto mostrado en |
|
|
|
Identificador único del subprograma |
|
|
Firma de la función o procedimiento (en el lenguaje de destino) |
|
|
|
Dueño del modulo MLE de nivel máximo |
|
|
|
Nombre del módulo MLE de nivel máximo |
|
|
|
Dueño del ambiente MLE |
|
|
|
Nombre del ambiente MLE |
|
|
|
Dueño del lenguaje MLE |
|
|
|
Nombre del lenguaje MLE |
|
|
|
Texto del código fuente de la función o procedimiento |
1 2 |
select object_name, object_id, signature, module_name from user_mle_procedures; |
El comando anterior nos devuelve el nombre del procedimiento o función, id de objeto, firma y nombre de módulo de los procedimientos MLE definidos en nuestro usuario actual de base de datos. Su ejecución produce una salida similar a la siguiente:
OBJECT_NAME OBJECT_ID SIGNATURE MODULE_NAME
__________________ ____________ __________________ ____________________________
CUADRADO_PROC 85519 cuadrado(p_num) CUADRADO_MOD
HOLAMUNDO_PROC 85515 holamundo() HOLAMUNDO_MOD
HELLOWORLD_PROC 85517 helloWorld() HELLOWORLD_MODULE
Con esta consulta, podemos ver cuales procedimientos o funciones hacen llamados a cuales funciones Javascript en los módulos MLE definidos
Conoce más …
Para conocer más acerca de este tema, puedes consultar los documentos en los enlaces a continuación: