Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

PL/SQL и вывод на сообщений на экран

2,689 views
Skip to first unread message

Станислав

unread,
Mar 27, 2002, 4:17:48 AM3/27/02
to
Добрый день!
Возник вопрос

Можно ли выводить сообщения на экран во время выполнения процедуры
PL/SQL, а не после ее завершения
--
С уважением, Станислав
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru

Vadim

unread,
Mar 27, 2002, 4:21:54 AM3/27/02
to
Станислав <st...@bytecom.spb.ru> пишет:
> Добрый день!
> Возник вопрос

> Можно ли выводить сообщения на экран во время
> выполнения процедуры
> PL/SQL, а не после ее завершения

Советую посмотреть пакет dbms_pipe. Позволяет
общаться сообщениями между сессиями.
--

Ilya Protasov

unread,
Mar 27, 2002, 8:55:47 AM3/27/02
to
Или так:

begin
dbms_output.put_line('Текст сообщения');
end;


Vadim <vadim_...@mail.ru> пишет:


> Станислав <st...@bytecom.spb.ru> пишет:
>> Добрый день!
>> Возник вопрос

>> Можно ли выводить сообщения на экран во время
>> выполнения процедуры
>> PL/SQL, а не после ее завершения

> Советую посмотреть пакет dbms_pipe. Позволяет
> общаться сообщениями между сессиями.

--
"Главное начать - закончить тоже можно"

Илья Протасов.

Ilya Protasov

unread,
Mar 27, 2002, 9:23:58 AM3/27/02
to
Почему-то кусок кода пропал :((.
Попробую еще раз отправить.

begin
dbms_output.put_line('Текст сообщения');
end;

--

Ilya Protasov

unread,
Mar 27, 2002, 9:28:41 AM3/27/02
to
Такое ощущение, что talk.ru удаляет из сообщения операторные скобки
("BEGIN-----END;")и все что между ними находится.

Vitaliy Lyanchevskiy

unread,
Mar 27, 2002, 10:22:05 AM3/27/02
to
Hello, Ilya!
27.03.2002 14:23, Ilya Protasov -> Ilya Protasov:

IP> Почему-то кусок кода пропал :((.
IP> Попробую еще раз отправить.
IP> begin
IP> dbms_output.put_line('Текст сообщения');
IP> end;

:) Ты столько раз пытался донести до нас что-то...
Прочитай оригинальный вопрос,
там есть фраза "а не после ее завершения".
Вот из-за неё все твои тычки с dbms_output не в тему :(

--
WBR, Vitaliy Lyanchevskiy (E-Mail: el...@ecard.ru)

Ilya Protasov

unread,
Mar 28, 2002, 4:39:22 AM3/28/02
to
А в чем проблема?
Вставляешь после любого оператора. При чем тут после выполнения?
В SQL Plus все отлично на экран выводится.
А вот про общение между сессиями сессиями в вопросе ни слова небыло.


Vitaliy Lyanchevskiy <el...@ecard.ru> пишет:
VL> Hello, Ilya!
VL> 27.03.2002 14:23, Ilya Protasov -> Ilya Protasov:

IP>> Почему-то кусок кода пропал :((.
IP>> Попробую еще раз отправить.
IP>> begin
IP>> dbms_output.put_line('Текст сообщения');
IP>> end;

VL> :) Ты столько раз пытался донести до нас
VL> что-то...
VL> Прочитай оригинальный вопрос,
VL> там есть фраза "а не после ее завершения".
VL> Вот из-за неё все твои тычки с dbms_output не в
VL> тему :(

--
"Главное начать - закончить тоже можно"

Илья Протасов.

Pavel Shendrygailow

unread,
Mar 28, 2002, 5:28:45 AM3/28/02
to
Привет

"Ilya Protasov" <il...@novsu.ac.ru> wrote in message
news:a7uod0$oul$1...@host.talk.ru...


> А в чем проблема?
> Вставляешь после любого оператора. При чем тут после выполнения?

Вставить то проблем никаких :-)

> В SQL Plus все отлично на экран выводится.

А вот выводиться будет "после выполнения"

> А вот про общение между сессиями сессиями в вопросе ни слова небыло.
>
>
> Vitaliy Lyanchevskiy <el...@ecard.ru> пишет:
> VL> Hello, Ilya!
> VL> 27.03.2002 14:23, Ilya Protasov -> Ilya Protasov:
>
> IP>> Почему-то кусок кода пропал :((.
> IP>> Попробую еще раз отправить.
> IP>> begin
> IP>> dbms_output.put_line('Текст сообщения');
> IP>> end;
>
> VL> :) Ты столько раз пытался донести до нас
> VL> что-то...
> VL> Прочитай оригинальный вопрос,
> VL> там есть фраза "а не после ее завершения".
> VL> Вот из-за неё все твои тычки с dbms_output не в
> VL> тему :(
>
> --
> "Главное начать - закончить тоже можно"
>
> Илья Протасов.
> Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru

Напиши тестик, а потом почитай документацию,
очень полезно перед сном... иногда... с пивом :-)

Pavel Shendrygailow


Vitaliy Lyanchevskiy

unread,
Mar 28, 2002, 5:47:16 AM3/28/02
to
Привет, Ilya

28.03.2002 11:39, Ilya Protasov -> Vitaliy Lyanchevskiy:

IP>>> begin
IP>>> dbms_output.put_line('Текст сообщения');
IP>>> end;

VL>> Прочитай оригинальный вопрос,


VL>> там есть фраза "а не после ее завершения".

VL>> Вот из-за неё все твои тычки с dbms_output не в тему :(

IP> А в чем проблема?
IP> Вставляешь после любого оператора. При чем тут после выполнения?

:) Ты вообще чувствуешь разницу между
"в процессе" и "после" выполнения ?
Ещё раз тебе повторяю, очень вдумчиво перечитай оригинальный вопрос.

IP> В SQL Plus все отлично на экран выводится.

:) В SQL*Plus-е гораздо проще выводится командой PROMPT.

IP> А вот про общение между сессиями сессиями в вопросе ни слова небыло.

В рамках одной сессии SUBJ (в контексте вопроса) невозможен.

--
Vitaliy Lyanchevskiy (E-mail: el...@ecard.ru)

Ilya Protasov

unread,
Mar 28, 2002, 7:33:29 AM3/28/02
to
Вопрос поставлен про процедуру PL SQL

<<Можно ли выводить сообщения на экран во время выполнения процедуры
<<PL/SQL, а не после ее завершения
Я предложил ее модифицировать, добавив в нее вывод сообщения.
Если нет возмозможности ее модификации это другой вопрос и он здесь не
ставился.
А вы разницу между PL SQL и SQL знаете? Здесь речь идет именно о PL
SQL. Почитайте сами документацию и внимательней читайте вопросы.

--

Aleksandr V. Konakov

unread,
Mar 28, 2002, 8:07:02 AM3/28/02
to
Здравствуйте, Ilya!

> Вопрос поставлен про процедуру PL SQL
> <<Можно ли выводить сообщения на экран во время выполнения процедуры
> <<PL/SQL, а не после ее завершения
> Я предложил ее модифицировать, добавив в нее вывод сообщения.
> Если нет возмозможности ее модификации это другой вопрос и он здесь не
> ставился.
> А вы разницу между PL SQL и SQL знаете? Здесь речь идет именно о PL
> SQL. Почитайте сами документацию и внимательней читайте вопросы.

Илья, попробуйте, например, выполнить следующий анонимный PL/SQL блок,
а потом скажите, видели ли Вы сообщения _во время_ выполнения этого
блока.

begin
for i in 1..100 loop
for j in 1..10000 loop
null;
end loop;
dbms_output.put_line(i);
end loop;
end;

--
С наилучшими пожеланиями,
Александр Конаков

Vitaliy Lyanchevskiy

unread,
Mar 28, 2002, 8:11:53 AM3/28/02
to
Привет, Ilya

28.03.2002 14:33, Ilya Protasov -> Vitaliy Lyanchevskiy:

IP> Вопрос поставлен про процедуру PL SQL
IP> <<Можно ли выводить сообщения на экран во время выполнения процедуры
IP> <<PL/SQL, а не после ее завершения
IP> Я предложил ее модифицировать, добавив в нее вывод сообщения.
IP> Если нет возмозможности ее модификации это другой вопрос и он здесь не
IP> ставился.

:) Ну ты, блин, упрямый.
Ещё раз. Здесь не ставился вопрос вроде такого
"Как вывести сообщение из процедуры PL/SQL?",
на который ты и ответил.
Такой вопрос был бы довольно чайниковым (впрочем, как и твой ответ :) )
Речь не о выводе сообщений _ВООБЩЕ_,
а именно _ВО ВРЕМЯ_ работы процедуры.

IP> А вы разницу между PL SQL и SQL знаете?
IP> Здесь речь идет именно о PL SQL.

:-) Вот те раз! :-)) А слона то я и не приметил! :-)))

IP> Почитайте сами документацию и внимательней читайте вопросы.

:-(((( Полностью разделяю эту точку зрения!

--
Vitaliy Lyanchevskiy (E-mail: el...@ecard.ru)

Ilya Protasov

unread,
Mar 28, 2002, 8:19:54 AM3/28/02
to
После его небольшой модификации - да.
К сожалению talk.ru выбрасывает текст программы.
Отправил ответом на письмо.
--

Alexey Kirich

unread,
Mar 28, 2002, 8:51:15 AM3/28/02
to

"Ilya Protasov" <il...@novsu.ac.ru> wrote in message
news:a7v5ag$14q$1...@host.talk.ru...

> После его небольшой модификации - да.
> К сожалению talk.ru выбрасывает текст программы.
> Отправил ответом на письмо.


Перешли и мне плз.
Интересно.


Ilya Protasov

unread,
Mar 28, 2002, 8:45:10 AM3/28/02
to
Я кажется погял в чем у Вас проблема.
В SQL PLUS надо набрать
SET SERVEROUT ON
По умолчанию - off. Поэтому сообщения из PL SQL блока не отображается.
А введя указанную команду наблюдаем как все улучшилось.

Илья Протасов.
--

Pavel Shendrygailow

unread,
Mar 28, 2002, 9:05:59 AM3/28/02
to
"Ilya Protasov" <il...@novsu.ac.ru> wrote in message
news:a7v6ps$8n4$1...@host.talk.ru...

> Я кажется погял в чем у Вас проблема.

Сомневаюсь ;-)

> В SQL PLUS надо набрать
> SET SERVEROUT ON
> По умолчанию - off. Поэтому сообщения из PL SQL блока не отображается.
> А введя указанную команду наблюдаем как все улучшилось.

А ТЕПЕРЬ ЕЩЕ РАЗ ДЛЯ ТЕХ, КТО В ТАНКЕ:

Note:
Messages sent using DBMS_OUTPUT are not actually sent until the
sending subprogram or trigger completes. There is no mechanism to flush
output during the execution of a procedure.

> Илья Протасов.
> --
> Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru

Pavel Shendrygailow


Aleksandr V. Konakov

unread,
Mar 28, 2002, 9:21:57 AM3/28/02
to
Здравствуйте, Ilya!

> Я кажется погял в чем у Вас проблема.
> В SQL PLUS надо набрать
> SET SERVEROUT ON
> По умолчанию - off. Поэтому сообщения из PL SQL блока не отображается.
> А введя указанную команду наблюдаем как все улучшилось.

Вывод осуществляется _после_ выполнения блока, а не _во время_. Так
непонятно?

--
С наилучшими пожеланиями,
Александр Конаков

Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru

Aleksandr V. Konakov

unread,
Mar 28, 2002, 9:44:47 AM3/28/02
to
Здравствуйте, Pavel!

> А ТЕПЕРЬ ЕЩЕ РАЗ ДЛЯ ТЕХ, КТО В ТАНКЕ:

> Note:
> Messages sent using DBMS_OUTPUT are not actually sent until the
> sending subprogram or trigger completes. There is no mechanism to flush
> output during the execution of a procedure.

Во, надо было сразу в документацию тыкать, так держать! :-)

--
С наилучшими пожеланиями,
Александр Конаков

Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru

Vadim

unread,
Mar 28, 2002, 12:50:05 PM3/28/02
to
Vitaliy Lyanchevskiy <el...@ecard.ru> пишет:
VL> Привет, Ilya

VL> 28.03.2002 14:33, Ilya Protasov -> Vitaliy
VL> Lyanchevskiy:

IP>> Вопрос поставлен про процедуру PL SQL
IP>> <<Можно ли выводить сообщения на экран во

VL> время выполнения процедуры


IP>> <<PL/SQL, а не после ее завершения
IP>> Я предложил ее модифицировать, добавив в нее

VL> вывод сообщения.


IP>> Если нет возмозможности ее модификации это

VL> другой вопрос и он здесь не
IP>> ставился.

VL> :) Ну ты, блин, упрямый.
VL> Ещё раз. Здесь не ставился вопрос вроде такого
VL> "Как вывести сообщение из процедуры PL/SQL?",
VL> на который ты и ответил.
VL> Такой вопрос был бы довольно чайниковым (впрочем,
VL> как и твой ответ :) )
VL> Речь не о выводе сообщений _ВООБЩЕ_,
VL> а именно _ВО ВРЕМЯ_ работы процедуры.

IP>> А вы разницу между PL SQL и SQL знаете?
IP>> Здесь речь идет именно о PL SQL.

VL> :-) Вот те раз! :-)) А слона то я и не приметил!
VL> :-)))

IP>> Почитайте сами документацию и внимательней

VL> читайте вопросы.

VL> :-(((( Полностью разделяю эту точку зрения!

На экран в процессе выполнения никогда подобного не видел !
Только на диск utl_file. Я вот всё пытаюсь письмо email
через хранимую прцедуры вывести но никак не могу.

--

Serega Dobrikov

unread,
Mar 29, 2002, 2:17:25 AM3/29/02
to
> SET SERVEROUT ON
> По умолчанию - off. Поэтому сообщения из PL SQL блока не отображается.
> А введя указанную команду наблюдаем как все улучшилось.
супер :))) отлично поднял настроение с утра, молодец :)


0 new messages