En algunas ocasiones durante nuestros desarrollos, vamos a necesitar variables globales que se puedan compartir entre varias pantallas, por default existen 2 maneras de hacerlo, una de forma estática y otra de forma dinámica, en este lab les enseñaré como usar las 2 formas:
Variables Globales Estáticas
Ingresamos a las propiedades de la aplicación:

Dentro de las propiedades nos iremos a la sección de Subtitutions y aquí podremos colocar todas las variables con texto estático, crearé una llamada MI_VARIABLE que al llamarla me devuelva el texto «HOLA MUNDO!»:

Para llamar estas variables, únicamente lo podemos realizar desde PL/SQL usando la expresión :MI_VARIABLE
Lo podemos ver en el siguiente ejemplo, crearemos un text field y en el source llamaremos a :MI_VARIABLE

Lo cargamos y veremos como nos carga el texto de la variable:

El problema con estas variables esque únicamente son de acceso, no se les puede establecer un valor durante el desarrollo, es por ello que para trabajar con diferentes valores durante la sesión del usuario vamos a trabajar con variables dinámicas.
Variables Globales Dinámicas
Para crear una variable dinámica ingresamos en shared components y luego en applications items:

Presionamos el botón create:

Le colocamos un nombre a la variable y definimos el scope, el scope lo que hará será permitir que esta variable sea compartida globalmente entre aplicaciones de Oracle APEX con la misma sesión del usuario o bien únicamente para esta aplicación:

Luego definiremos el Session State Protection, esto lo que nos permitirá será enviar o no valores cuando se utilice un post o vía url hacia esta variable global, por default lo podemos dejar en Restricted para mayor seguridad:

Ahora para establecerle un valor o llamarlo, vamos a hacer lo siguiente:
Primero crearemos un nuevo text field:

Luego crearemos un evento on load para asignarle algún valor a la variable, este deberá ejecutar código PL/SQL:

apex_util.set_session_state('VARIABLE_GLOBAL', 'Esta es mi variable Global');
Por último, para llamar el valor de la variable, lo haremos asignando el valor al item como en las líneas siguientes 3 y 4:
apex_util.set_session_state('VARIABLE_GLOBAL', 'Esta es mi variable Global'); :P5_SEGUNDO_METODO := :VARIABLE_GLOBAL; apex_util.set_session_state('P5_SEGUNDO_METODO', :VARIABLE_GLOBAL);
Ejecutamos la aplicación:

De esta manera podemos establecer variables globales que se compartirán a nivel de la sesión del usuario, esta misma variable global, la podemos llamar y establecerle valores diferentes en todas las pantallas de nuestra aplicación.