Creating a Context
Create a Context
Section titled “Create a Context”CREATE CONTEXT my_ctx USING my_pkg;This creates a context that can only be set by routines in the database package my_pkg, e.g.:
CREATE PACKAGE my_pkg AS PROCEDURE set_ctx;END my_pkg;
CREATE PACKAGE BODY my_pkg AS PROCEDURE set_ctx IS BEGIN DBMS_SESSION.set_context('MY_CTX','THE KEY','Value'); DBMS_SESSION.set_context('MY_CTX','ANOTHER','Bla'); END set_ctx;END my_pkg;Now, if a session does this:
my_pkg.set_ctx;It can now retrieve the value for the key thus:
SELECT SYS_CONTEXT('MY_CTX','THE KEY') FROM dual;
ValueSyntax
Section titled “Syntax”- CREATE [OR REPLACE] CONTEXT namespace USING [schema.]package;
- CREATE [OR REPLACE] CONTEXT namespace USING [schema.]package INITIALIZED EXTERNALLY;
- CREATE [OR REPLACE] CONTEXT namespace USING [schema.]package INITIALIZED GLOBALLY;
- CREATE [OR REPLACE] CONTEXT namespace USING [schema.]package ACCESSED GLOBALLY;
Parameters
Section titled “Parameters”|Parameter|Details
|---|---|---|---|---|---|---|---|---|---
|OR REPLACE|Redefine an existing context namespace
|namespace|Name of the context - this is the namespace for calls to SYS_CONTEXT
|schema|Owner of the package
|package|Database package that sets or resets the context attributes. Note: the database package doesn’t have to exist in order to create the context.
|INITIALIZED|Specify an entity other than Oracle Database that can set the context.
|EXTERNALLY|Allow the OCI interface to initialize the context.
|GLOBALLY|Allow the LDAP directory to initialize the context when establishing the session.
|ACCESSED GLOBALLY|Allow the context to be accessible throughout the entire instance - multiple sessions can share the attribute values as long as they have the same Client ID.
Remarks
Section titled “Remarks”Oracle documentation (12cR1): http://docs.oracle.com/database/121/SQLRF/statements_5003.htm