9 / 9 / 1
Регистрация: 08.06.2011
Сообщений: 185
|
||||||
1 | ||||||
Sys_context09.11.2015, 18:24. Показов 2495. Ответов 14
Метки нет (Все метки)
Добрый вечер.
Попробую объяснить своими словами. В веб-апликухе, с которой я работаю, есть кнопка для создания файлов, в которые заносятся автоматически определенные данные. И в этот файл должны заносится имя и фамилия человека, который создает этот файл из под своей учетки. В пакете, который отвечает за генерацию файла, данную штуку описывает данная функция
0
|
09.11.2015, 18:24 | |
Ответы с готовыми решениями:
14
Вывести список пространств имен функции SYS_CONTEXT Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
|
||||||
10.11.2015, 09:26 | 2 | |||||
SQL Reference
Function SYS_CONTEXT Можно также посмотреть функцию dbms_session.set_context и
0
|
9 / 9 / 1
Регистрация: 08.06.2011
Сообщений: 185
|
|||||||||||
11.11.2015, 11:19 [ТС] | 3 | ||||||||||
не совсем понятно, где это. или это то, что гуглить нужно? гуглил, но особо ничего не понял
через
И еще вопрос, почему в
0
|
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
|
|
11.11.2015, 12:19 | 4 |
Сообщение от пк00мук
Докой можно пользоваться и через Инет, но я предпочитаю скачивать ее с оф. сайта и пользовать локально, поэтому url на конкретную главу дать не могу. Можно еще посмотреть том Application Developer Guide
Сообщение от пк00мук
1
|
4 / 4 / 0
Регистрация: 28.02.2015
Сообщений: 51
|
|
11.11.2015, 23:38 | 5 |
Контекст это такая специальная структура данных, которая создается в PGA на уровне сессии. Таких структур данных, контекстов может быть несколько. Каждая структура имеет имя. Данная структура по сути представляет из себя набор пар имя_параметра, значение параметра. Эта структура может изменяться только определенной, доверенной процедурой, которую надо регистрировать.
В вашем случае, судя по всему, контекст не устанавливается. Его надо устанавливать в сессии. Продебажить DBMS_SESSION.SET_CONTEXT не получится, так как он завраплен. Покажите полный код процедуры, которая устанавливается параметры контекста.
0
|
9 / 9 / 1
Регистрация: 08.06.2011
Сообщений: 185
|
||||||
12.11.2015, 10:55 [ТС] | 6 | |||||
Тут их 2, почти ничем не отличаются, видимо какаято из них
0
|
4 / 4 / 0
Регистрация: 28.02.2015
Сообщений: 51
|
||||||
12.11.2015, 12:07 | 7 | |||||
Выполните пожалуйста следующий запрос:
0
|
9 / 9 / 1
Регистрация: 08.06.2011
Сообщений: 185
|
|
12.11.2015, 12:25 [ТС] | 8 |
0
|
4 / 4 / 0
Регистрация: 28.02.2015
Сообщений: 51
|
|
12.11.2015, 15:08 | 9 |
Ну вот и ответ на Ваш вопрос.
Нужно создать контекс my_info. create context my_info using <название пакета>. Название пакета это название того пакета, который будет использоваться в качестве доверительного и через который будут устанавливаться его параметры.
0
|
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
|
|
12.11.2015, 15:22 | 10 |
Как я понял, приведенная картинка - это строка из dba_context (хотя и в несколько странном виде ), т.е. такой контекст уже создан.
0
|
4 / 4 / 0
Регистрация: 28.02.2015
Сообщений: 51
|
||||||
12.11.2015, 15:35 | 11 | |||||
Поищете где в вашем приложении вызываются эти процедуры, потому что они должны валится с ошибкой. Но судя по тому как используется exception when others, вполне возможно что это происходит в тихую.
Добавлено через 11 минут А, действительно, я не внимательно посмотрел, контекст создан. Странно просто результат приложен =) Тогда ищет проблему в следующих местах: 1. Вызываются ли ваши доверенные процедуры в сессии. 2. Exception when others так использовать не стоит. Возможно они и вызвыаются, но падают в exception и все это происходит абсолютно молча. Дерните эту процедуру напрямую в сессии, а потом проверьте что выдает изначальный селект, то есть:
0
|
9 / 9 / 1
Регистрация: 08.06.2011
Сообщений: 185
|
|||||||||||
12.11.2015, 16:23 [ТС] | 12 | ||||||||||
обернул через тег в таблицу, как и у меня в девелопере)
Процедура не валится, если её протесить то она доходит до
дописал для проверки
а просто с sql window вызвать контекст не могу
0
|
4 / 4 / 0
Регистрация: 28.02.2015
Сообщений: 51
|
||||||
12.11.2015, 17:07 | 13 | |||||
Показывайте скриншот =)
0
|
9 / 9 / 1
Регистрация: 08.06.2011
Сообщений: 185
|
|
12.11.2015, 17:28 [ТС] | 14 |
0
|
4 / 4 / 0
Регистрация: 28.02.2015
Сообщений: 51
|
|
12.11.2015, 20:59 | 15 |
Контекст устанавливается на уровне сессии. То есть если у вас есть две сессии, и вы в одной из них вызвали доверенную процедуру, а в в другой пытаетесь читать, то вы ничего не увидите.
Вы уверены что сессия тест TestScript и и select from dual у вас в одной сессии? Выполните код, который я предложил в посте #11. В одной и той же сессии дергаете процедуру и сразу же за ней дергаете select from dual.
0
|
12.11.2015, 20:59 | |