Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не понятное с view V_$Session [D5, Oracle, ]


kat ©   (2001-12-21 14:30:00) 

У меня вот какая проблема, помогите пожалуйста
Ораковскаю функция
Function Pr return varchar2 is
vv varchar2(100) default "";
cursor a is
select view_name from ALL_VIEWS
WHERE VIEW_NAME = "V_$SESSION";
begin
open a;
fetch a into vv;
close a;
return vv;
end Pr;
вызываю функцию в дельфе - showmessage(OraclePackage.CallStringFunction("pr",[]))И мне показывается пустое ShowMessage;
Пишу в TOracleDataSet
select view_name from ALL_VIEWS
WHERE VIEW_NAME = "V_$SESSION";
И мне выдается строчка
Почему так получается? Если вместо V_$Session написать, например, ALL_CATALOG, то все работает, а как только написано что-то с $ в названии - проблема. Что означает $ в названии?


petr_v_a   (2001-12-21 16:57:00) [1]

а она будет видеть только прямо ( не через роль ) или через select/execute any разрешенные объекты


kat   (2001-12-21 16:53:00) [2]

А как посмотреть какую надо дать роль, чтобы видеть все view?


petr_v_a   (2001-12-21 16:47:00) [3]

Значит, 1394 - 572 объектов доступны VIC через роли


kat   (2001-12-21 16:16:00) [4]

Функция сохранена в пакете, Owner этого пакета VIC


petr_v_a   (2001-12-21 16:07:00) [5]

ф-ция user действительно выдает одно и тоже из SQL и PL/SQL - пользователя, под которым прозошел коннект, но контекст ALL_VIEWS меняется.
чтоб узнать владельца ф-ции, скажите
select OWNER,OBJECT_NAME,OBJECT_TYPE
from ALL_OBJECTS
where OBJECT_NAME= :название_Вашей_функции


kat   (2001-12-21 15:51:00) [6]

Строчки
select view_name from ALL_VIEWS
WHERE VIEW_NAME = "V_$SESSION"
меняю на следующие
select USER || " " || TO_CHAR(count(*)) from SYS.ALL_VIEWS
И у меня получается, что User один и тот же везде, но
Выдается
VIC 572 - вызвать функцию из пакета
и
VIC 1394-сформировать запрос
Не видно кучу функций, не только с $ в названии. Почему?


petr_v_a   (2001-12-21 15:19:00) [7]

А владелец ф-ции пользователь, под которым идет запрос в TOracleDataSet - одно то же лицо? процедура/ф-ция/пакет выполняются с правами их владельца, и ALL_VIEWS будет выдавать те же записи, что и owner`у объекта.
$ в названиии - признак т.н. Dynamic Perfomance View, то есть view, которое реально не занимает места в базе, а отображает стуктуры памяти экземпляра. Для V_$SESSION есть public synonym V$SESSION, лучше использовать его ( иначе надо обращаться sys.v_$session )


Наверх

Титульная страница Поиск, карта сайта Написать письмо