Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Триггер AFTER LOGON ON SCHEMA -- как сделать, чтобы выполнялся несколькими пользователями  [new]
vvetrov
Member

Откуда:
Сообщений: 45
Сорри за глупый вопрос...
Мне нужно, чтобы после коннекта пользователя,
инициализировались переменные пакаджа.
Попробовал триггер AFTER LOGON ON SCHEMA - выполняется только при логоне владельца схемы. А как сделать так, чтобы после логона любого юзера, использующего объекты схемы ?
24 май 06, 21:53    [2702969]     Ответить | Цитировать Сообщить модератору
 Re: Триггер AFTER LOGON ON SCHEMA -- как сделать, чтобы выполнялся несколькими пользователями  [new]
denix1
Member

Откуда: Киев
Сообщений: 4656
в пакете можно сделать секцию инициализации, которая будет вызывать автоматически при первом(в рамках сессии) обращении к пакету
там и можно/нужно все инициализировать

SQL> CREATE PACKAGE pkg_test
  2  IS
  3     v VARCHAR2(30);
  4  END pkg_test;
  5  /

Package created.

SQL> CREATE PACKAGE BODY pkg_test
  2  IS
  3  BEGIN
  4    v:='initialization';
  5  END pkg_test;
  6  /

Package body created.

SQL> SET SERVEROUTPUT ON
SQL> exec DBMS_OUTPUT.PUT_LINE(pkg_test.V);
initialization

PL/SQL procedure successfully completed.
24 май 06, 23:59    [2703177]     Ответить | Цитировать Сообщить модератору
 Re: Триггер AFTER LOGON ON SCHEMA -- как сделать, чтобы выполнялся несколькими пользовате  [new]
donkey
Member

Откуда: Уфа
Сообщений: 187
А почему нельзя использовать триггер LOGON ON DATABASE
... и тут он задумался
25 май 06, 06:27    [2703439]     Ответить | Цитировать Сообщить модератору
 Re: Триггер AFTER LOGON ON SCHEMA -- как сделать, чтобы выполнялся несколькими пользовате  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6913
donkey
А почему нельзя использовать триггер LOGON ON DATABASE
... и тут он задумался

а зачем, если переменные пакета инициализируются при первом к нему обращении?
25 май 06, 09:05    [2703584]     Ответить | Цитировать Сообщить модератору
 Re: Триггер AFTER LOGON ON SCHEMA -- как сделать, чтобы выполнялся несколькими пользователями  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
vvetrov
инициализировались переменные пакаджа.

Имеется ввиду, что для каждого пользователя переменные инициализируются по-разному что ли?
25 май 06, 10:08    [2703854]     Ответить | Цитировать Сообщить модератору
 Re: Триггер AFTER LOGON ON SCHEMA -- как сделать, чтобы выполнялся несколькими пользователями  [new]
igor_zim
Member

Откуда: Украина
Сообщений: 25
А если так попробовать
SELECT SYS_CONTEXT ('USERENV', 'CURRENT_SCHEMA') INTO sTEMP FROM DUAL;
25 май 06, 10:28    [2703959]     Ответить | Цитировать Сообщить модератору
 Re: Триггер AFTER LOGON ON SCHEMA -- как сделать, чтобы выполнялся несколькими пользователями  [new]
denix1
Member

Откуда: Киев
Сообщений: 4656
igor_zim
А если так попробовать
SELECT SYS_CONTEXT ('USERENV', 'CURRENT_SCHEMA') INTO sTEMP FROM DUAL;

а причем выборка к инициализации ?
и контекст к пакету ?

опять же при желании - можно переменные пакета инициализировать под конкретного пользователя - для того они и переменные :-)
25 май 06, 11:54    [2704556]     Ответить | Цитировать Сообщить модератору
 Re: Триггер AFTER LOGON ON SCHEMA -- как сделать, чтобы выполнялся несколькими пользователями  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10045
alex-ls
а зачем, если переменные пакета инициализируются при первом к нему обращении?


Package is an object. When session references a package for the first time package instance is loaded into session memory. This is called package instantiation. As you can see, package scope is limited to a session. Package variables are not and can not be shared across sessions.

SY.
25 май 06, 21:12    [2707682]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить