Creating a Context

Other topics

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;

Value

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:

ParameterDetails
OR REPLACERedefine an existing context namespace
namespaceName of the context - this is the namespace for calls to SYS_CONTEXT
schemaOwner of the package
packageDatabase package that sets or resets the context attributes. Note: the database package doesn't have to exist in order to create the context.
INITIALIZEDSpecify an entity other than Oracle Database that can set the context.
EXTERNALLYAllow the OCI interface to initialize the context.
GLOBALLYAllow the LDAP directory to initialize the context when establishing the session.
ACCESSED GLOBALLYAllow 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.

Contributors

Topic Id: 2088

Example Ids: 6852

This site is not affiliated with any of the contributors.