with example mysql oracle plsql session-variables

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.