El contenido dinámico es un nuevo tipo de región muy similar al tipo de región de contenido dinámico heredado de PL/SQL, con algunas diferencias claves:

  • El origen de la región debe devolver el valor HTML como un archivo CLOB. El valor ya no se emite a través del paquete HTP.
  • Las regiones de contenido dinámico se pueden actualizar y admiten la carga diferida.
  • El origen de la región soporta PL/SQL como Javascript (MLE) si se usa la base de datos Oracle 21c.

La región de contenido dinamico PL/SQL, aunque ahora está marcado como Legacy, seguirá funcionando como antes. Para crear una nueva región, primero debemos seleccionar «Show Legacy» en el menú desplegable Tipo de región. Sin embargo, el team de APEX recomienda mover las regiones existentes al nuevo tipo de región. Esto debe hacerse manualmente, ya que el código fuente de la región debe convertirse para devolver un CLOB, en lugar de usar el paquete HTP. Para consultar regiones existentes, debemos ejecutar la siguiente consulta SQL:

select application_id, page_id, region_name
from apex_application_page_regions
where source_type = 'PL/SQL';

Veamos ahora un ejemplo.

Creamos una región de contenido dinámico en nuestra página, y en el origen de la región colocamos el siguiente código PL/SQL.

declare
l_result clob := '<p>Tiempo actual: ' || to_char( sysdate, 'HH24:MI:SS' ) || '</p>';
begin

l_result := l_result || '<h4> Lista de empleados: </h4>';
l_result := l_result || '<ul>';

for empl in (
select initcap(ename) as ename,
lower (job) as job
from emp
) loop
l_result := l_result || '<li><strong>' || apex_escape.html(empl.ename) || '</strong>' ||
' (' || apex_escape.html (empl.job) || ')</li>';
end loop;

l_result := l_result || '</ul>';

return l_result;

end;

Vemos que el resultado debe ser de tipo HTML como un CLOB.

Ejecutamos la página, vemos el resultado, el cual se muestra el listado de empleados de la tabla EMP marcando en negrita el nombre y mostrando el job entre paréntesis.

*** Fuente del código extraído del video Dynamic Content Region with Oracle APEX 22.2.

Hasta la próxima!