Ir al contenido principal

Los comandos DEFINE y UNDEFINE. ok


Variables de Nivel sesión son implícitamente creadas cuando son referenciadas con ampsersand doble en sentencias SQL. Persisten y permanecen disponibles durante toda la sesión de usuario hasta que la sesión es terminada. Una sesión termina cuando cerramos el cliente sql o cuando se cierra anormalmente. El problema con la persistencia de las variables sesión es que pueden provocar confusiones durante la ejecución de una sentencia sql. Afortunadamente estas variables sesión pueden ser eliminadas con el comando UNDEFINE, la sintaxis es:

UNDEFINE variable;

Ejemplo:

-- ESQUEMA HR
-- LOCATIONS COUNTRIES JOB_HISTORY REGIONS DEPARTMENTS EMPLOYEES JOBS

SELECT location_id, street_address calle, state_province "DELEGACION/MUNICIPIO", city ciudad, country_id pais
FROM   locations
WHERE  location_id = &&id;

DEFINE;

UNDEFINE id;

El comando DEFINE sirve para dos propósitos. Puede ser utilizado para recuperar todas las variables definidas en la sesión. Puede ser utilizado para definir explícitamente un valor para una variable referenciada como una variable de sustitución que puede ser utilizada por una o más sentencias durante el tiempo de vida de la sesión.

DEFINE;
DEFINE variable=valor;
  
Ejemplo:

-- ESQUEMA HR
-- LOCATIONS COUNTRIES JOB_HISTORY REGIONS DEPARTMENTS EMPLOYEES JOBS

DEFINE id = 1000;

SELECT location_id, street_address calle, state_province "DELEGACION/MUNICIPIO", city ciudad, country_id pais
FROM   locations
WHERE  location_id = &id;

DEFINE;

DEFINE id = 1100;

SELECT location_id, street_address calle, state_province "DELEGACION/MUNICIPIO", city ciudad, country_id pais
FROM   locations
WHERE  location_id = &id;

DEFINE;

La capacidad del Cliente Sql para soportar la persistencia de variables sesión  puede activada o desactiva mediante el comando SET. El comando SET no es un comando SQL. Es un comando de control del entorno. Especificando SET DEFINE OFF, el cliente SQL no guarda variables sesión. Esto permite que el símbolo amspersand sea utilizado como un literal ordinario. El comando SET DEFINE ON | OFF determina si o no la sustitución amspersand está disponible.

-- ESQUEMA HR
-- LOCATIONS COUNTRIES JOB_HISTORY REGIONS DEPARTMENTS EMPLOYEES JOBS

SET DEFINE ON;

SELECT 'JHON & TERRY' FROM DUAL;

SET DEFINE OFF;

SELECT 'JHON & TERRY' FROM DUAL;

SET DEFINE ON;

Comentarios