Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MySQL equivalent session variable for Oracle

In MySQL, I can create an access a session variable by using a single @. Example initialization:

set @myVar = true;

Some trigger containing this code:

if (@myVar is not true) then
  execute something

What is the equivalent in Oracle 10g?

like image 291
Joshua Avatar asked Jul 22 '26 03:07

Joshua


2 Answers

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
like image 138
Quassnoi Avatar answered Jul 23 '26 17:07

Quassnoi


A package global variable would probably do the same trick.

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;

An advantage of using the package over SYS_CONTEXT is that you get some encapsulation.

like image 45
Thomas Jones-Low Avatar answered Jul 23 '26 18:07

Thomas Jones-Low