Oracle Global Temporary Table и использование хранимых процедур и функций - PullRequest
0 голосов
/ 10 декабря 2010

мы недавно изменили одну из баз данных, которые я разрабатываю, с учетных записей Oracle на учетные записи входа LDAP, и все прошло хорошо для внешнего интерфейса, используемого персоналом, который обращается к системе.Однако у нас есть второй метод ввода, ограниченный персоналом администратора, который загружает данные в базу данных, и большая часть обработки вызывается с использованием dbms_scheduler.

Большинство таблиц базы данных имеют столбец create_by, который по умолчанию равенвыберите свое имя пользователя из sys_context, но когда загрузка данных запускается из dbms_scheduler, эта информация недоступна, и, следовательно, все столбцы create_by заполнены APP_GLOBAL.

Мне удалось заполнить глобальную временную таблицу (GTT) со значением sys_context и используйте его, чтобы заполнить созданный_байем из хранимой процедуры, вызываемой dbms_scheduler, поэтому следующим моим логическим шагом было поместить это в функцию и вызвать ее, чтобы ее можно было использовать во всей системе или даже ссылаться на нее перед вставкойтриггер.

Проблема в том, что при вводе кода в функцию данные из GTT не обнаруживаются.Таблица настроена для сохранения строк.

Я перебрал много сайтов для ответа, но не нашел ничего, что могло бы помочь мне, может кто-нибудь здесь предложить решение?

Ответы [ 2 ]

0 голосов
/ 13 декабря 2010

Выходные и более внимательный взгляд на мой код показали фатальный недостаток в моем синтаксисе, когда выбор данных из GTT никогда не произойдет. Быстрая настройка и перекомпиляция, и все хорошо.

Джек, спасибо за помощь.

0 голосов
/ 10 декабря 2010

Планировщик будет использовать сеанс, отличный от сеанса, создавшего задание - preserve rows не сделает данные GTT видимыми в другом сеансе.

Я предполагаю, что столбцы created_by имеют значение по умолчанию, например nvl(sys_context(...),'APP_GLOBAL'). Подумайте о передаче имени пользователя в качестве параметра в задание и установите контекст в качестве первого шага в задании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...