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

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

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

Нам конечно море по колено, но
А ПОПРОЩЕ НЕТ СПОСОБА? :_)
...
Рейтинг: 0 / 0
Можно ли послать сообщение средствами Oracle?
    #32083773
DimaR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Куда уж проще:)
Код: 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
Можно ли послать сообщение средствами Oracle?
    #32083775
Фотография Oleg Afanasiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 DimaR:

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

А по твоему примеру register просто регестрирует ожидающего
и все сообщения будут к нему поступать по мере того как вызывается
SIGNAL.
Тоесть waitnone ждёт _без цикла_ безконечно.
На протяжении жизни процедуры.
Или сеанса?
Если второе то это намного удобнее чем я думал. ;_)
...
Рейтинг: 0 / 0
Можно ли послать сообщение средствами Oracle?
    #32083785
DimaR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для полноты понимания загляни в доку, например:
Код: 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
Можно ли послать сообщение средствами Oracle?
    #32083972
Фотография Oleg Afanasiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возвращаясь к нашим сообщениям :_)
Я не хочу бездумно юзать оболочки, а понять как реализует эти
вещи сервер.
Вот что я наваял. Предположим что юзер ждёт сигнала так:
Код: 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
Можно ли послать сообщение средствами Oracle?
    #32084097
DimaR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Посмотри реализацию в DOA, там сделано отдельной сессией для получения сообщений
...
Рейтинг: 0 / 0
Можно ли послать сообщение средствами Oracle?
    #32084470
NikFedorovyh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для посылки сообщений из ORACLE средствами электронной почты есть библиотека SENDSMTP.DLL
Правда, она для WINDOWS. Может быть, кто нибудь знает, есть ли что-нибудт аналогичное для ДШТГЧ ,
...
Рейтинг: 0 / 0
Можно ли послать сообщение средствами Oracle?
    #32084982
DimaR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В 8i есть пакет utl_smtp и utl_tcp
шли кого хочеш, куда хочеш, хоть через Windows Messenger (если знаеш протокол:)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Можно ли послать сообщение средствами Oracle?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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