Поиск…


Синтаксис

  • СОЗДАТЬ [ИЛИ ЗАМЕНИТЬ] пространство имен CONTEXT ИСПОЛЬЗОВАНИЕ [схема];
  • СОЗДАТЬ [ИЛИ ЗАМЕНИТЬ] пространство имен CONTEXT ИСПОЛЬЗОВАНИЕ [схема] пакет INITIALIZED EXTERNALLY;
  • СОЗДАТЬ [ИЛИ ЗАМЕНИТЬ] пространство имен CONTEXT ИСПОЛЬЗОВАНИЕ [схема] пакет INITIALIZED GLOBALY;
  • СОЗДАТЬ [ИЛИ ЗАМЕНИТЬ] пространство имен CONTEXT ИСПОЛЬЗОВАНИЕ [схема] пакет ДОСТУП К ГЛОБАЛЬНО;

параметры

параметр подробности
OR REPLACE Переопределить существующее пространство имен контекста
Пространство имен Имя контекста - это пространство имен для вызовов SYS_CONTEXT
схема Владелец пакета
пакет Пакет базы данных, который устанавливает или сбрасывает атрибуты контекста. Примечание. Пакет базы данных не должен существовать для создания контекста.
INITIALIZED Укажите объект, отличный от базы данных Oracle, который может установить контекст.
EXTERNALLY Разрешить интерфейсу OCI инициализировать контекст.
GLOBALLY Разрешить каталогу LDAP инициализировать контекст при создании сеанса.
ACCESSED GLOBALLY Разрешить контекст быть доступным во всем экземпляре - несколько сеансов могут совместно использовать значения атрибутов, если они имеют одинаковый идентификатор клиента.

замечания

Документация Oracle (12cR1): http://docs.oracle.com/database/121/SQLRF/statements_5003.htm

Создать контекст

CREATE CONTEXT my_ctx USING my_pkg;

Это создает контекст, который может быть установлен только подпрограммами в пакете базы данных my_pkg , например:

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;

Теперь, если сеанс делает это:

my_pkg.set_ctx;

Теперь он может получить значение для ключа таким образом:

SELECT SYS_CONTEXT('MY_CTX','THE KEY') FROM dual;

Value


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow