Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 ALTER SESSION и PLSQL  [new]
Lav
Member

Откуда: Белокаменная
Сообщений: 220
Здавствуйте, уважаемые.

Кто-нибудь может мне объяснить как мне делать ALTER SESSION из PLSQL блока кода.
Проблема в следующем:

Замечательно работает :
Connect testuser/pwd@testdb;
alter session set current_schema=MEGAOWNER;
Select * From T1TABLE;

И работает только со второго раза конструкция вида:
Begin
  Execute Immediate 'alter session set current_schema=MEGAOWNER';
  Select Count(*) Into :a From T1TABLE;
End;

T1TABLE лежит в схеме MEGAOWNER права на селект для TESTUSER даны.
19 мар 07, 12:04    [3914055]     Ответить | Цитировать Сообщить модератору
 Re: ALTER SESSION и PLSQL  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
И работает только со второго раза конструкция вида:

А это как выглядит?
19 мар 07, 12:12    [3914108]     Ответить | Цитировать Сообщить модератору
 Re: ALTER SESSION и PLSQL  [new]
Oleg Ivanov
Member

Откуда: Киев
Сообщений: 289
На момент синтаксического разбора блока Oracle еще не знает что схема поменяется.
Поэтому не видит T1TABLE
19 мар 07, 12:13    [3914116]     Ответить | Цитировать Сообщить модератору
 Re: ALTER SESSION и PLSQL  [new]
Lav
Member

Откуда: Белокаменная
Сообщений: 220
Немного ошибся(запутался) не совторого раза, а если выполнить сначала

Begin
  Execute Immediate 'alter session set current_schema=MEGAOWNER';
  Select Count(*) Into :a From MEGAOWNER.T1TABLE;
End;

а потом

Begin
  Execute Immediate 'alter session set current_schema=MEGAOWNER';
  Select Count(*) Into :a From T1TABLE;
End;

(проверяю в plsql/developere)
19 мар 07, 12:15    [3914128]     Ответить | Цитировать Сообщить модератору
 Re: ALTER SESSION и PLSQL  [new]
Lav
Member

Откуда: Белокаменная
Сообщений: 220
Oleg Ivanov
На момент синтаксического разбора блока Oracle еще не знает что схема поменяется.
Поэтому не видит T1TABLE


Что ж делать то
19 мар 07, 12:15    [3914135]     Ответить | Цитировать Сообщить модератору
 Re: ALTER SESSION и PLSQL  [new]
arhey
Member

Откуда: Санкт-Петербург. Россия... :)
Сообщений: 221
посмотрите в сторону синонимов.
хотя в общем случае не прокатит. Придется вам весь код динамически писать.
19 мар 07, 12:18    [3914148]     Ответить | Цитировать Сообщить модератору
 Re: ALTER SESSION и PLSQL  [new]
Oleg Ivanov
Member

Откуда: Киев
Сообщений: 289
Lav
Oleg Ivanov
На момент синтаксического разбора блока Oracle еще не знает что схема поменяется.
Поэтому не видит T1TABLE


Что ж делать то

Использовать хранимые процедуры
или явно указывать владельцев объектов
или изменять текущую схему до выполнения анонимного блока
19 мар 07, 12:19    [3914155]     Ответить | Цитировать Сообщить модератору
 Re: ALTER SESSION и PLSQL  [new]
Elic
Member

Откуда:
Сообщений: 29976
Lav
Что ж делать то
Динамически alter-ишь - динамически и select-ь.
19 мар 07, 12:20    [3914160]     Ответить | Цитировать Сообщить модератору
 Re: ALTER SESSION и PLSQL  [new]
Lav
Member

Откуда: Белокаменная
Сообщений: 220
Все. Спасибо разобрался. И правда в клиентской части все работает. Там же не одним блоком-то все выполняется. при входе в систему все альтерю. А потом все замечательно работает.
19 мар 07, 12:22    [3914183]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить