У меня есть процедура PL / SQL, которая устанавливает некоторую переменную в сеансе пользователя, например: -
Dbms_Session.Set_Context(
NAMESPACE =>'MY_CTX',
ATTRIBUTE => 'FLAG_NAME',
Value => 'some value');
Сразу после этого (в той же процедуре) я пытаюсь прочитать значение этогофлаг, используя: -
SYS_CONTEXT('MY_CTX', 'FLAG_NAME');
Выше ничего не возвращает.Как БД потеряла это значение?Более странная часть заключается в том, что если я вызываю этот процесс напрямую из Oracle SQL Developer, он работает.Это не работает, когда я вызываю этот процесс из моего веб-приложения из вызываемого оператора.
- EDIT -
Добавлен пример того, как мы вызываемпроцесс из нашего кода Java.
String statement = "Begin package_name.proc_name( flag_val => :1); END;";
OracleCallableStatement st = <some object by some framework>
.createCallableStatement(statement);
st.setString(1, 'flag value');
st.execute();
st.close();