Office Address

  • 123/A, Miranda City Prikano
  • +0989 7876 9865 9
  • info@example.com

Social List

¡Cómo Usar Contextos para Revolucionar tus Aplicaciones sin Variables Globales!

Lectura: 2 minutos

En Oracle, un contexto es un contenedor que se utiliza para definir y almacenar información de sesión o datos específicos del usuario. Los contextos son una característica poderosa que permite a las aplicaciones compartir datos personalizados entre sesiones o consultas de SQL y PL/SQL, sin necesidad de utilizar variables globales ni tablas temporales.

Características principales

  • Nombre único: Cada contexto tiene un nombre único que lo identifica en la base de datos.
  • Ámbito de sesión: Los valores del contexto son específicos de la sesión, lo que significa que cada sesión de usuario puede tener su propia versión de los datos almacenados en el contexto.
  • Seguridad y control: Los valores en un contexto se establecen mediante procedimientos definidos en un paquete PL/SQL asociado. Esto proporciona un control estricto sobre qué lógica puede modificar los valores del contexto.

Propósito de los contextos en Oracle

Los contextos tienen varias aplicaciones prácticas, entre ellas:

  1. Seguridad basada en el contexto:
    • Se utilizan para implementar seguridad a nivel de fila (Row-Level Security) o políticas de control de acceso dinámicas.
  2. Almacenar datos específicos de la sesión:
    • Los contextos se utilizan para guardar información como el ID del usuario, roles, configuraciones, ubicaciones, o cualquier otro dato relevante a la sesión.
    • Esto permite que las aplicaciones accedan a esta información fácilmente durante el procesamiento de consultas.
  3. Optimización del rendimiento:
    • Al evitar el uso de tablas temporales o variables globales, los contextos ayudan a reducir la sobrecarga de administración y mejoran la eficiencia en el manejo de datos específicos de la sesión.
  4. Aislamiento entre sesiones:
    • Cada sesión de usuario tiene su propio conjunto de valores en el contexto, garantizando que no haya conflictos entre usuarios concurrentes.

 

Ejemplo utilizando Oracle APEX

create context user_context using user_pkg;
/

 

create or replace package user_pkg as
procedure set_user_context (
ctx in varchar2
, value in varchar2
, key in varchar2
);

end user_pkg;

/

create or replace package body user_pkg as

procedure set_user_context (
ctx in varchar2
, value in varchar2
, key in varchar2
) is
begin
dbms_session.set_context(ctx, key, value);
end;

end user_pkg;
/

begin
user_pkg.set_user_context(‘user_context’, null, ‘admin’);
end;
/

select
sys_context(‘user_context’, ‘admin’) as “Usuario”
from
dual;
/

Video

Post a Comment

Your email address will not be published. Required fields are marked *