sábado, 28 de marzo de 2026

Llamar a procedimientos almacenados de manera declarativa en Oracle APEX-Invoke API

 Desde APEX 22.2 está disponible el tipo de proceso INVOKE API que consiste en llamar de forma declarativa al procedimiento, función o paquete a ejecutar como parte del procesamiento de una página web de la aplicación.

Para ejemplificar el uso del proceso Llamar a API  se ha creado una aplicación de nombre Gestor de Proyectos, basada en la tabla PROYECTO con la siguiente estructura:

CREATE TABLE "PROYECTO" 

(      

  "PROYECTO_ID" NUMBER(6,0)

    GENERATED BY DEFAULT ON NULL PRIMARY KEY

  "NOMBRE_PROYECTO" VARCHAR2(120) NOT NULL ENABLE, 

  "MONTO_PROYECTO" NUMBER(7,3) NOT NULL ENABLE, 

  "FECHA_INICIO" DATE DEFAULT TO_DATE(SYSDATE), 

  "ESTADO_PROYECTO" VARCHAR2(30)

);


El procedimiento de nombre establecer_estado_proyecto_por_monto  contiene el siguiente código:


create or replace procedure establecer_estado_proyecto_por_monto(

    p_proyecto_id number,

                                                                  p_monto_proyecto number)

  as

    var_estado_proyecto varchar2(30);

 begin

     if p_monto_proyecto>10000 then

         var_estado_proyecto:='ANALISIS';

     end if;


     update proyecto

         set estado_proyecto=var_estado_proyecto

      where  proyecto_id=p_proyecto_id;

      commit;

 end;

/


Agregar a la aplicación una página de tipo Informe Interactivo de nombre Proyectos basada en la tabla Proyecto, deberá incluir una pantalla de edición(formulario o pantalla).

Las instrucciones a seguir para la aplicación de este tipo de proceso se detalla a continuación:

1) Abra la página de tipo pantalla de nombre Proyecto, esta es la pantalla de edición creada con el informe interactivo.

2) Seleccionar la región de Procesos y con el botón derecho del mouse hacer clic sobre procesos y elegir la opción Crear Proceso del menú contextual. 

3) En el panel de propiedades del proceso, llenar el cuadro de propiedades con los  datos de la siguiente imagen:


4) Clic en el botón Guardar.

Una vez guardados los cambios, el proceso tendrá los parámetros del procedimiento como se muestra en la siguiente imagen:




Al ejecutar la aplicación e introducir los datos desde el formulario, se obtiene el siguiente resultado:


Entre los dos proyectos insertados, solo el proyecto con monto de 15000 USD. pasa al estado de ANALISIS como lo define el procedimiento almacenado invocado.

Como conclusión, el proceso Llamada a API facilita la invocación de procedimientos almacenados debido a que se trata de un componente visual que automáticamente asocia los elementos de la página web con los parámetros del procedimiento llamado.

Roberto Párraga Zambrano


viernes, 27 de marzo de 2026

Oracle Database 23ai-Nuevas características(Parte 2)

 Continuando con las nuevas características de Oracle 23ai Free Edition, se presentarán en este artículo la creación de tablas y los dominios.

1) Creación y borrado de tablas

CREATE TABLE IF NOT EXISTS PROYECTO(
  PROYECTO_ID number(6,0),
  NOMBRE_PROYECTO varchar2(120) NOT NULL,
  MONTO_PROYECTO NUMBER(7,3) NOT NULL,
  FECHA_INICIO DATE DEFAULT TO_DATE(SYSDATE)
);

Table PROYECTO created.


En la imagen se puede apreciar que la sentencia de creación de tabla se ha ejecutado dos veces mostrando el mismo mensaje "Table PROYECTO creado.
"

Para borrar tablas, se puede agregar la cláusula IF EXISTS a la sentencia DROP TABLE.

DROP TABLE IF  EXISTS PROYECTO;

Table PROYECTO deleted.

2) Dominios

Un dominio es un objeto del diccionario de datos que encapsula tipos de datos, restricciones y reglas de visualización. 
Este objeto se define una vez y puede aplicarse a uno o más campos de una tabla, facilitando la definición de restricciones y validaciones en lugar de aplicarlos uno a uno por cada campo.

En el siguiente código, se define un dominio de nombre monto_proyecto_domain que contiene los siguientes elementos:

  1. Tipo numérico: AS NUMBER.
  2. Una restricción: CHECK (VALUE > 0)
  3. Formato de despliegue o como se muestra: DISPLAY TO_CHAR(VALUE, '$999,999.99')
  4. Etiqueta para interface de usuario: ANNOTATIONS (ui_label  'Monto del Proyecto');

CREATE DOMAIN monto_proyecto_domain AS NUMBER

  CONSTRAINT montoproy_min_chk CHECK (VALUE > 0)

  DISPLAY TO_CHAR(VALUE, '$999,999.99')

  ANNOTATIONS (ui_label  'Monto del Proyecto');


Posteriormente, se redefine el campo MONTO_PROYECTO de tipo monto_proyecto_domain.

ALTER TABLE PROYECTO MODIFY (

   MONTO_PROYECTO DOMAIN monto_proyecto_domain

);

La siguiente imagen muestra la aplicación del código anteriormente explicado.


Como puede apreciarse, las mejoras que aporta Oracle 23ai ayudan significativamente en el proceso de creación de tablas y de dominios que extienden las capacidades de los tipos de datos ya conocidos.

Roberto Párraga Zambrano

jueves, 26 de marzo de 2026

Copiar en Excel y pegar en un Interactive Grid de Oracle APEX

 Uno de los requerimientos más frecuentes de los clientes que visualizan los datos en Cuadrículas Interactivas(Interactive Grid) de Oracle APEX, consiste en copiar y pegar filas desde Excel; ahora, el problema es que este tipo de región en APEX no soporta esta función de manera nativa(incluyendo la versión 24.2) y para implementarla se requiere codificar en JavaScript.

En el siguiente video, se demuestra que copiar y pegar desde Excel a una IG es posible, aclarando que esta operación se restringe al número de columna de la tabla en la que se basa la Cuadrícula Interactiva.


Si necesita aplicar esta funcionalidad, puede contactarme por medio de mi correo electrónico: robert_antoni792012@yahoo.com

Roberto Párraga Zambrano


Entrada destacada

Cómo instalar Oracle Database 18c Express Edition para Windows

Oracle Database 18c XE ya está disponible para Windows 64bit, en este post se enseñará como instalar y configurar esta nueva versión en W...