Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Можно ли послать сообщение средствами Oracle? / 13 сообщений из 13, страница 1 из 1
24.12.2002, 17:10
    #32083707
Sergey_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли послать сообщение средствами Oracle?
Можно ли послать средствами оракла послать сообщение пользователю оракла?
...
Рейтинг: 0 / 0
24.12.2002, 17:21
    #32083718
nick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли послать сообщение средствами Oracle?
DBMS_ALERT
DBMS_PIPE
...
Рейтинг: 0 / 0
24.12.2002, 18:02
    #32083754
Oleg Afanasiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли послать сообщение средствами Oracle?
2 Nick:
Работа этих пакетов больше похожа на работу сокетов,если я правильно понимаю. ТОесть чтобы послать сообщение нужно чтобы его кто-то принял.
Причём явно
Код: plaintext
1.
2.
DBMS_PIPE.RECIVE_MESSAGE(pipe_name);
DBMS_PIPE.UNPACK_MESSAGE(....);

А DBMS_ALERT реализует совсем интересную технику. Здесь необходимо, чтобы сообщения кто-то _ждал_. Сообщение пришло--перешли в состояние обработки и снова в ожидание, пока не придёт какой-нибудь terminate_signal

2 Sergey_:
Я так понял что тебе нужно явно послать сообщение юзеру например:
"Отрубись от сервера а то я тебя сам отрублю"
Правильно?
...
Рейтинг: 0 / 0
24.12.2002, 18:07
    #32083758
Sergey_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли послать сообщение средствами Oracle?
Именно послать предупреждение
...
Рейтинг: 0 / 0
24.12.2002, 18:10
    #32083760
nick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли послать сообщение средствами Oracle?
2 Oleg Afanasiev
>Работа этих пакетов больше похожа на работу сокетов,если я правильно понимаю. ТОесть чтобы послать сообщение нужно чтобы его кто-то принял.
Правильно
>Я так понял что тебе нужно явно послать сообщение юзеру например:
>"Отрубись от сервера а то я тебя сам отрублю"
А в чем проблема реализации этого с помощью этих пакетов?
...
Рейтинг: 0 / 0
24.12.2002, 18:17
    #32083765
Oleg Afanasiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли послать сообщение средствами Oracle?
Нуу если конечно напрячься можно написать 2 процедуры одна из них будет
жить на приём(причём для каждого юзера свой экземпляр) а вторая для админа чтоб юзерам сообщения посылать.

Нам конечно море по колено, но
А ПОПРОЩЕ НЕТ СПОСОБА? :_)
...
Рейтинг: 0 / 0
24.12.2002, 18:43
    #32083773
DimaR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли послать сообщение средствами Oracle?
Куда уж проще:)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Suppose you want to graph average salaries by department, for all employees.
Your application needs to know whenever EMP is changed.
Your application would look similar to this code: 
DBMS_ALERT.REGISTER('emp_table_alert');
    readagain: 
    /* ... read the emp table and graph it */  
      DBMS_ALERT.WAITONE('emp_table_alert', :message, :status); 
      if status =  0  then goto readagain; else 
       /* ... error condition */  

The EMP table would have a trigger similar to this: 
CREATE TRIGGER emptrig AFTER INSERT OR UPDATE OR DELETE ON emp
    BEGIN 
      DBMS_ALERT.SIGNAL('emp_table_alert', 'message_text'); 
   END;

When the application is no longer interested in the alert, it makes this request: 
DBMS_ALERT.REMOVE('emp_table_alert');
...
Рейтинг: 0 / 0
24.12.2002, 18:55
    #32083775
Oleg Afanasiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли послать сообщение средствами Oracle?
2 DimaR:

Как я понял принимающая сторона должна сидеть в цикле.

А по твоему примеру register просто регестрирует ожидающего
и все сообщения будут к нему поступать по мере того как вызывается
SIGNAL.
Тоесть waitnone ждёт _без цикла_ безконечно.
На протяжении жизни процедуры.
Или сеанса?
Если второе то это намного удобнее чем я думал. ;_)
...
Рейтинг: 0 / 0
24.12.2002, 19:16
    #32083785
DimaR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли послать сообщение средствами Oracle?
Для полноты понимания загляни в доку, например:
Код: plaintext
1.
2.
3.
4.
5.
6.
Syntax
DBMS_ALERT.WAITONE (
   name      IN   VARCHAR2,
   message   OUT  VARCHAR2,
   status    OUT  INTEGER,
   timeout   IN   NUMBER DEFAULT MAXWAIT);

А если ты пользуеш Delphi или Builder + DOA то там есть компонентик оболочка над этим и все очень просто.
...
Рейтинг: 0 / 0
25.12.2002, 11:20
    #32083972
Oleg Afanasiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли послать сообщение средствами Oracle?
Возвращаясь к нашим сообщениям :_)
Я не хочу бездумно юзать оболочки, а понять как реализует эти
вещи сервер.
Вот что я наваял. Предположим что юзер ждёт сигнала так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
PROCEDURE RECIVE (i in number) as
begin
declare
start_signal varchar2( 20 ):='START';
terminator varchar2( 20 ):='TERMINATE';
v_signal varchar2( 20 );
p_signal varchar2( 20 );
counter number;
begin
counter:= 0 ;
dbms_alert.register(start_signal);
dbms_alert.register(terminator);
loop   --это чтоб сигнал ожидался на протяжении всего сеанса
 
dbms_alert.waitany(v_signal,p_signal,counter);
exit when v_signal=terminator;
if v_signal=start_signal THEN
raise LOGIN_DENIED; --это к примеру
 
end if;
end loop;
dbms_alert.remove(start_signal);
dbms_alert.remove(terminator);
dbms_output.put_line(v_signal);
end;
end;


Я хочу сделать так, чтобы когда я посылаю ему так сообщение:
Код: plaintext
1.
2.
3.
4.
5.
declare
begin
dbms_alert.signal('START','Надаю по шее');
commit;
end;


У него выскочило окошко с моим сообщением, но он продолжал работу.
Если реализовывать в рамках 1 сеанса, то приведённый выше код
повесит мне сеанс. ТОесть в реализации на делфях мне нужен 1 трид
для сообщений(к примеру) и минимум 1 для работы.

Я прав?
Что скажет всезнающая общественность?
...
Рейтинг: 0 / 0
25.12.2002, 14:19
    #32084097
DimaR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли послать сообщение средствами Oracle?
Да. Посмотри реализацию в DOA, там сделано отдельной сессией для получения сообщений
...
Рейтинг: 0 / 0
26.12.2002, 08:37
    #32084470
NikFedorovyh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли послать сообщение средствами Oracle?
Для посылки сообщений из ORACLE средствами электронной почты есть библиотека SENDSMTP.DLL
Правда, она для WINDOWS. Может быть, кто нибудь знает, есть ли что-нибудт аналогичное для ДШТГЧ ,
...
Рейтинг: 0 / 0
26.12.2002, 21:25
    #32084982
DimaR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли послать сообщение средствами Oracle?
В 8i есть пакет utl_smtp и utl_tcp
шли кого хочеш, куда хочеш, хоть через Windows Messenger (если знаеш протокол:)
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Можно ли послать сообщение средствами Oracle? / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]