example - Variable de sesión equivalente MySQL para Oracle
mysql temporary table (3)
En MySQL, puedo crear una variable de sesión de acceso usando una sola @. Inicialización de ejemplo:
set @myVar = true;
Algunos activadores que contienen este código:
if (@myVar is not true) then
execute something
¿Cuál es el equivalente en Oracle 10g?
SQL> EXEC DBMS_SESSION.SET_CONTEXT(''CLIENTCONTEXT'', ''myvar'', ''myvalue'');
PL/SQL procedure successfully completed
SQL> SELECT SYS_CONTEXT(''CLIENTCONTEXT'', ''myvar'') FROM dual;
SYS_CONTEXT(''CLIENTCONTEXT'',''M
--------------------------------------------------------------------------------
myvalue
Una variable global del paquete probablemente haría el mismo truco.
CREATE OR REPLACE PACKAGE foo as
myVar BOOLEAN;
END foo;
CREATE OR REPLACE PACKAGE BODY foo AS
BEGIN
MyVar := true;
END foo;
BEGIN
If foo.myVar THEN
dbms_output.put_line (''MyVar is True'');
end if;
END;
Una ventaja de usar el paquete en SYS_CONTEXT es que obtiene un poco de encapsulación.
¿Por qué no usar solo las variables de vinculación? En SQL Plus:
variable SOME_NUMBER number
exec :SOME_NUMBER := 10
Procedimiento PL / SQL completado con éxito
if :SOME_NUMBER = 10 then
do something;
end if;
/
Funciona para cualquier tipo de tipo de datos Oracle.