2015-07-22 2 views
1
SELECT SYS_CONTEXT ('USERENV', 'CURRENT_SCHEMA') 
    FROM DUAL; 

дает текущую схему, я пытаюсь построить функцию DB2 эквивалентно Oracle SYS_CONTEXT. Я не понимаю, как оракул выбирает имя схемы. Любая таблица системы, где он хранит все имя схемы является кто-то есть какие-либо понять, пожалуйста, помогитеSytem имя таблицы для схемы

ответ

1

Любой таблицы системы, где она хранит все имя схемы

Вы можете использовать * _USERS вида, чтобы получить имена схем. В Oracle, имя схемы и имя пользователя являются синонимами.

Например, чтобы получить все имена схем:

SELECT username FROM all_users; 

Для просмотра текущего пользователя:

SELECT username FROM user_users; 

Если вы используете SQL * Plus, вы можете просто сделать:

SHOW USER 
+0

Да, я знаю, что хочу получить текущее имя схемы ,,, Предположим, что вы вошли в систему как user1 а затем изменить сеанс для пользователя 2. Теперь я хочу получить user2 в качестве текущей схемы .... SYS_CONTEXT - это решение, но я создаю эту функцию в БД, поэтому хочу знать, как оракул делает это в бэкэнд, мой взгляд там может быть быть таблицей, хранящей имя схемы n некоторый флаг может быть установлен в true при изменении сеанса – oracle

+0

@oracle Непонятно, что вы пытаетесь сделать. Что такое оператор alter, который вы используете? –

+0

Я хочу знать, как работает SYS_CONTEXT, когда вы указываете параметр как CURRENT_SCHEMA. Системная таблица, откуда она извлекает имя схемы – oracle

Смежные вопросы