
Introducción
¿Alguna vez en Oracle APEX el HTML se veía como texto plano? ¿Has visto que los valores sustituidos pierden símbolos, comillas o se escapan automáticamente?
Oracle APEX incluye una forma poderosa de mantener los valores originales sin que se escapen o modifiquen automáticamente: el uso de !RAW
.
Esta notación permite mantener los valores tal cual fueron generados, lo cual es clave en URLs dinámicas, JavaScript, redirecciones y cuando trabajas con firmas digitales o tokens.
En este artículo:
- Te explico qué hace y cómo funciona
!RAW
en sustituciones de Oracle APEX. - Verás un ejemplo empresarial real con enlaces de aprobación firmados.
- Te mostraré errores comunes y cómo evitarlos.
Este artículo es útil para desarrolladores APEX, especialistas en seguridad, y arquitectos de soluciones que crean apps dinámicas donde el valor exacto sí importa.
Tabla de Contenido
- ¿Qué es
!RAW
en Oracle APEX? - Sintaxis y contexto de uso
- Ejemplo real: enlace firmado con token de aprobación
- Consideraciones de seguridad y formato
- Buenas prácticas
- Conclusión y recurso extra
1. ¿Qué es !RAW
en Oracle APEX?
Oracle APEX, por defecto, escapa caracteres especiales en sustituciones tipo &ITEM.
para evitar problemas en HTML, JavaScript y otros contextos.
Cuando necesitas que el valor se mantenga exactamente igual —sin comillas, sin codificación HTML, sin backslashes— debes usar &ITEM!RAW.
o #COLUMN_NAME!RAW#
.
Esto es crítico cuando:
- Construyes URLs con tokens o firmas.
- Insertas valores en scripts JavaScript.
- Insertas datos en JSON o XML sin codificación.
2. Sintaxis y contexto de uso
Sustitución de ítems:
&MY_ITEM. -- escapado &MY_ITEM!RAW. -- sin escape
Sustitución de columnas:
#NOMBRE_COLUMNA# -- escapado #NOMBRE_COLUMNA!RAW# -- sin escape
Contextos típicos:
- En HTML: etiquetas
<a href="...">
- En JavaScript: construcción de objetos dinámicos
- En URLs: paso de parámetros firmados o codificados
3. Ejemplo real: enlace firmado con token de aprobación
Supón que generas un enlace con firma SHA-256 para aprobación de solicitudes. El link contiene ID
, TIMESTAMP
y un TOKEN
generado en backend.
SELECT 'f?p=APP:PAGE::' || :APP_SESSION || '::NO::P1_ID,P1_TOKEN:' || id || ',' || token AS enlace FROM solicitudes
En tu reporte APEX, creas una columna con el enlace generado, usando:
<a href="#ENLACE!RAW#">Aprobar solicitud</a>
Importante: Si usas #ENLACE#
sin !RAW
, los símbolos como &
, =
, %
o :
se codifican y el link se rompe.
Resultado: el link funciona, se mantiene exacto, y lleva al usuario directamente al flujo de aprobación con seguridad.
4. Consideraciones de seguridad y formato
!RAW
no valida ni escapa nada, así que no debes usarlo con datos provenientes del usuario sin sanitizar.- Idealmente, sólo se usa con valores generados por PL/SQL backend o consultas controladas.
- Siempre valida el token o firma en la página de destino para evitar manipulación.
5. Buenas prácticas
- ✅ Usa
!RAW
sólo cuando sepas que el valor no necesita escape. - ✅ Aplica validación del lado servidor si el valor contiene firmas, tokens o identificadores sensibles.
- ✅ Documenta en tu equipo cuándo usar
!RAW
y cuándo no. - ✅ Para JavaScript, considera envolver con
APEX_ESCAPE.JAVASCRIPT_LITERAL
si el valor puede venir del usuario. - ✅ En links generados, audita que no se generen XSS al permitir ejecución de código arbitrario.
6. Conclusión
El uso de !RAW
en Oracle APEX te permite construir aplicaciones más dinámicas y seguras, siempre que entiendas bien su propósito.
No es una función mágica, pero usada correctamente te permite:
- Construir enlaces firmados
- Insertar scripts dinámicos sin errores
- Evitar escapes HTML automáticos que rompen tu lógica
Es una herramienta más en tu arsenal como desarrollador profesional de APEX.
¿Quieres aprender más?
Ver cursos en Aprendiz Academy:
https://app.aprendiz.academy/ords/r/aprendiz/aprendiz-academy/home