powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Select и UTL_SMTP Oracle
22 сообщений из 22, страница 1 из 1
Select и UTL_SMTP Oracle
    #39277426
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите как можно через UTL_SMTP отправлять результат select, например Select * from v$version;
...
Рейтинг: 0 / 0
Select и UTL_SMTP Oracle
    #39277443
SAS2014,

вызовами функций пакета.
...
Рейтинг: 0 / 0
Select и UTL_SMTP Oracle
    #39277454
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
плскл п. и т. референсSAS2014,

вызовами функций пакета.
а пример напишешь?
...
Рейтинг: 0 / 0
Select и UTL_SMTP Oracle
    #39277456
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Select и UTL_SMTP Oracle
    #39277513
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select -> XML + XSLT = html
18103532
...
Рейтинг: 0 / 0
Select и UTL_SMTP Oracle
    #39277548
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитал инфу которую подсказал dmdmdm, но так не понял точто что куда
Вот текст процедуры

Код: plsql
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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
CREATE OR REPLACE PROCEDURE size_db IS

    subject VARCHAR2(120) := 'УВЕДОМЛЕНИЕ О СОБЫТИЕ БАЗЫ ДАННЫХ'; -- Заголовок письма
    message1 VARCHAR2(220) := 'ПРЕДУПРЕЖДЕНИЕ: Превышен лимит в 1000Мб свободного пространства!'; -- Содержимое письма
    message2 VARCHAR2(220) := 'ДЕЙСТВИЕ: Необходимо увеличить/добавить файл в табличное пространство!';
    message3 VARCHAR2(220) := '-------------------------------------------------------------------------------------';
    message4 VARCHAR2(220) := 'Информация о базе данных:';
    message5 VARCHAR2(220) := 'Текущий объем табличных пространств:';
    mailhost VARCHAR2(30) := '************************'; -- Сервер почты smtp.что-то.ru
    sender VARCHAR2(30) := '**************************'; -- Отправитель <кто-то@knaapo.ru>
    recipient VARCHAR2(255) := '**********************'; -- Получатель <кто-то@knaapo.ru>
    mail_conn utl_smtp.connection;

BEGIN

    
    mail_conn := utl_smtp.open_connection(mailhost, 25);
    utl_smtp.helo(mail_conn, mailhost);
    utl_smtp.mail(mail_conn, sender);
    utl_smtp.rcpt(mail_conn, recipient);
    utl_smtp.open_data(mail_conn );
    utl_smtp.write_data(mail_conn,'Date: ' || to_char(sysdate,'dd Mon yy hh24:mi:ss','NLS_DATE_LANGUAGE = Russian')||CHR(13)||CHR(10));
    utl_smtp.write_data(mail_conn,'From: ' || sender||CHR(13)||CHR(10));
    utl_smtp.write_raw_data(mail_conn, utl_raw.cast_to_raw('Subject: '||NVL(subject,'(no subject)')||CHR(13)||CHR(10)));
    utl_smtp.write_data(mail_conn,'MIME-Version: 1.0' ||CHR(13)||CHR(10));
    utl_smtp.write_data(mail_conn,'Content-Type: text/plain; charset="UTF-8"' ||CHR(13)||CHR(10));
    utl_smtp.write_data(mail_conn,'Content-Transfer-Encoding: 8bit' ||CHR(13)||CHR(10));
    utl_smtp.write_data(mail_conn,'To: '||recipient||CHR(13)||CHR(10));
    utl_smtp.write_raw_data(mail_conn,utl_raw.cast_to_raw(CHR(13)||CHR(10)|| message3 ));
    utl_smtp.write_raw_data(mail_conn,utl_raw.cast_to_raw(CHR(13)||CHR(10)|| message1 ));
    utl_smtp.write_raw_data(mail_conn,utl_raw.cast_to_raw(CHR(13)||CHR(10)|| message2 ));
    utl_smtp.write_raw_data(mail_conn,utl_raw.cast_to_raw(CHR(13)||CHR(10)|| message3 ));
    utl_smtp.write_raw_data(mail_conn,utl_raw.cast_to_raw(CHR(13)||CHR(10)|| message4 ));
    utl_smtp.write_raw_data(mail_conn,utl_raw.cast_to_raw(CHR(13)||CHR(10)|| message5 ));
    utl_smtp.close_data(mail_conn );
    utl_smtp.quit(mail_conn);
    
EXCEPTION
WHEN OTHERS THEN
utl_smtp.quit(mail_conn);
END;




вот запрос select, результат которого отсылался по почте через процедуру
Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT  
              NAME 
              as "Имя", HOST_NAME 
              as "Сервер", OPEN_MODE 
              as "Режим базы", DATABASE_STATUS 
              as "Статус базы", CREATED as "Дата создания" 
              FROM V$DATABASE,  V$INSTANCE;
...
Рейтинг: 0 / 0
Select и UTL_SMTP Oracle
    #39277562
SAS2014,

Понятно, что очень приятно каждый день на протяжении лет получать напоминание, когда создана БД.
Но что будет делать получатель письма, если получит, что статус бд CLOSED?
...
Рейтинг: 0 / 0
Select и UTL_SMTP Oracle
    #39277617
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SAS2014, вам правда непонятно, куда запихнуть текст сообщения?

В переменные message1, message2 и т.д.

Или вы начинающий, не знающий PL/SQL ?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
    db_name varchar2(100) ;
    db_version varchar2(500);
    message1 VARCHAR2(220) := 'Хехей! Я база ';

    select upper(value) into db_name
      from v$parameter where name = 'db_unique_name';
    select banner into db_version
     from v$version where rownum = 1;
    message1 := message1 || db_name || ' версии ' || db_version;



Честно пишите, что вы не знаете, и что хотите узнать.

Студентам, желающим помощи.

Не забудьте делать проверку не изнутри базы, а извне, скриптом ОС - на случай, если база упадет.
...
Рейтинг: 0 / 0
Select и UTL_SMTP Oracle
    #39278286
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
трудоголик сизифSAS2014,

Понятно, что очень приятно каждый день на протяжении лет получать напоминание, когда создана БД.
Но что будет делать получатель письма, если получит, что статус бд CLOSED?

Эта запрос про базу это просто для инфы, основная инфа - free space.
...
Рейтинг: 0 / 0
Select и UTL_SMTP Oracle
    #39278287
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdmSAS2014, вам правда непонятно, куда запихнуть текст сообщения?

В переменные message1, message2 и т.д.

Или вы начинающий, не знающий PL/SQL ?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
    db_name varchar2(100) ;
    db_version varchar2(500);
    message1 VARCHAR2(220) := 'Хехей! Я база ';

    select upper(value) into db_name
      from v$parameter where name = 'db_unique_name';
    select banner into db_version
     from v$version where rownum = 1;
    message1 := message1 || db_name || ' версии ' || db_version;



Честно пишите, что вы не знаете, и что хотите узнать.

Студентам, желающим помощи.

Не забудьте делать проверку не изнутри базы, а извне, скриптом ОС - на случай, если база упадет.

Да у меня очень мал о практики в PL/SQL
...
Рейтинг: 0 / 0
Select и UTL_SMTP Oracle
    #39278294
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или я дурак)) или лыжи не едут ...
Код: plsql
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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
CREATE OR REPLACE PROCEDURE size_db IS

    subject VARCHAR2(120) := 'УВЕДОМЛЕНИЕ О СОБЫТИЕ БАЗЫ ДАННЫХ';
    message1 VARCHAR2(220) := 'ПРЕДУПРЕЖДЕНИЕ: Превышен лимит в 100Мб свободного пространства!';
    message2 VARCHAR2(220) := 'ДЕЙСТВИЕ: Необходимо увеличить/добавить файл в табличное пространство!';
    message3 VARCHAR2(220) := '-------------------------------------------------------------------------------------';
    message4 VARCHAR2(220) := 'Информация о базе данных:';
    message5 VARCHAR2(220) := 'Текущий объем табличных пространств:';
    mailhost VARCHAR2(30) := 'EXCHANGE2013.***********';
    sender VARCHAR2(30) := '********************'; 
    recipient VARCHAR2(255) := '***********************';
    -------------------------------------------------------------------------
    db_name varchar2(100);
    db_version varchar2(500);
    message6 varchar2(220) := 'Тест инфы:'
    ------------------------------------------------------------------------
        
    mail_conn utl_smtp.connection;
    
BEGIN
   --------------------------------------------------------------------------------------------------------------------------
     select upper(value) into db_name from v$parameter where name = 'db_unique_name';
     select banner into db_version from v$version where rownum = 1;
     message6 := message6 || db_name || 'версии' || db_version;
   -------------------------------------------------------------------------------------------------------------------------
    
    mail_conn := utl_smtp.open_connection(mailhost, 25);
    utl_smtp.helo(mail_conn, mailhost);
    utl_smtp.mail(mail_conn, sender);
    utl_smtp.rcpt(mail_conn, recipient);
    utl_smtp.open_data(mail_conn );
    utl_smtp.write_data(mail_conn,'Date: ' || to_char(sysdate,'dd Mon yy hh24:mi:ss','NLS_DATE_LANGUAGE = Russian')||CHR(13)||CHR(10));
    utl_smtp.write_data(mail_conn,'From: ' || sender||CHR(13)||CHR(10));
    utl_smtp.write_raw_data(mail_conn, utl_raw.cast_to_raw('Subject: '||NVL(subject,'(no subject)')||CHR(13)||CHR(10)));
    utl_smtp.write_data(mail_conn,'MIME-Version: 1.0' ||CHR(13)||CHR(10));
    utl_smtp.write_data(mail_conn,'Content-Type: text/plain; charset="UTF-8"' ||CHR(13)||CHR(10));
    utl_smtp.write_data(mail_conn,'Content-Transfer-Encoding: 8bit' ||CHR(13)||CHR(10));
    utl_smtp.write_data(mail_conn,'To: '||recipient||CHR(13)||CHR(10));
    utl_smtp.write_raw_data(mail_conn,utl_raw.cast_to_raw(CHR(13)||CHR(10)|| message3 ));
    utl_smtp.write_raw_data(mail_conn,utl_raw.cast_to_raw(CHR(13)||CHR(10)|| message1 ));
    utl_smtp.write_raw_data(mail_conn,utl_raw.cast_to_raw(CHR(13)||CHR(10)|| message2 ));
    utl_smtp.write_raw_data(mail_conn,utl_raw.cast_to_raw(CHR(13)||CHR(10)|| message3 ));
    utl_smtp.write_raw_data(mail_conn,utl_raw.cast_to_raw(CHR(13)||CHR(10)|| message4 ));
    utl_smtp.write_raw_data(mail_conn,utl_raw.cast_to_raw(CHR(13)||CHR(10)|| message5 ));
    -----------------------------------------------------------------------------------------------------------------------------
    utl_smtp.write_raw_data(mail_conn,utl_raw.cast_to_raw(CHR(13)||CHR(10)|| message6 ));
    -----------------------------------------------------------------------------------------------------------------------------
    utl_smtp.close_data(mail_conn );
    utl_smtp.quit(mail_conn);
    
EXCEPTION
WHEN OTHERS THEN
utl_smtp.quit(mail_conn);
END;



При компиляции ошибка:
...
Рейтинг: 0 / 0
Select и UTL_SMTP Oracle
    #39278355
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Не работайте по SYS.
2. Изучите вашу среду разработки. Она подскажет, где ошибка.
...
Рейтинг: 0 / 0
Select и UTL_SMTP Oracle
    #39278360
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdm1. Не работайте по SYS.
2. Изучите вашу среду разработки. Она подскажет, где ошибка.

да это тестовая база, в боевой там будет другая схема.
Я так понял выделеная фраза не там должна теперь быть?
так как без вкл в код select то все работает.
...
Рейтинг: 0 / 0
Select и UTL_SMTP Oracle
    #39278416
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. О том и речь. Под SYS и под другой учеткой код может работать по-разному. Лучше сразу отладить под учеткой с ограниченными правами. Например, гранты на вьюхи V$ точно придется раздавать.

2. Привыкайте читать текст ошибки.

Код: plsql
1.
2.
Encountered the symbol "MAIL_CONN" when expecting one of the following:     
          * & = - + ; < / > ...



Я сократил текст, попробуйте угадать, какого из символов там не хватает :).
...
Рейтинг: 0 / 0
Select и UTL_SMTP Oracle
    #39279367
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdm1. О том и речь. Под SYS и под другой учеткой код может работать по-разному. Лучше сразу отладить под учеткой с ограниченными правами. Например, гранты на вьюхи V$ точно придется раздавать.

2. Привыкайте читать текст ошибки.

Код: plsql
1.
2.
Encountered the symbol "MAIL_CONN" when expecting one of the following:     
          * & = - + ; < / > ...



Я сократил текст, попробуйте угадать, какого из символов там не хватает :).

нашел где ошибка.

А как можно форматировать т.е. принимать html теги?
...
Рейтинг: 0 / 0
Select и UTL_SMTP Oracle
    #39281474
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Непонятна задача, детализируйте.

UTL_SMTP отправляет. Накручивайте туда чего угодно. "Принимать html-теги" - любой почтовик/браузер их отобразит.
...
Рейтинг: 0 / 0
Select и UTL_SMTP Oracle
    #39281578
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdmНепонятна задача, детализируйте.

UTL_SMTP отправляет. Накручивайте туда чего угодно. "Принимать html-теги" - любой почтовик/браузер их отобразит.

Я просто не знаю в куда и как вставить , например, чтобы результат запроса select * from v$database; отправлялся в виде таблички, да находил в инете примеры, но в моем случае как то не хочет работать код
...
Рейтинг: 0 / 0
Select и UTL_SMTP Oracle
    #39281583
SAS2014в моем случае как то не хочет работать кодпопробуй его уговорить ласками, если не поможет, угрозами. В конце-концов, мужик ты или где!
...
Рейтинг: 0 / 0
Select и UTL_SMTP Oracle
    #39281592
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пряник и Кнут, ДональдSAS2014в моем случае как то не хочет работать кодпопробуй его уговорить ласками, если не поможет, угрозами. В конце-концов, мужик ты или где!

это не баба же чтоб ее силой заставлять
...
Рейтинг: 0 / 0
Select и UTL_SMTP Oracle
    #39281744
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SAS2014Я просто не знаю в куда и как вставить

Найти учебник по html с примерами - дело на 1 минуту.

Расставить теги и точки с запятыми - давайте сами.

Я, конечно, терпелив, но это уже детский сад.
...
Рейтинг: 0 / 0
Select и UTL_SMTP Oracle
    #39282335
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdmSAS2014Я просто не знаю в куда и как вставить

Найти учебник по html с примерами - дело на 1 минуту.

Расставить теги и точки с запятыми - давайте сами.

Я, конечно, терпелив, но это уже детский сад.

Да язык разметки страницы я знаю, у меня просто проблема в синтаксисе связки pl\sql и html
...
Рейтинг: 0 / 0
Select и UTL_SMTP Oracle
    #39282404
SAS2014dmdmdm но это уже детский сад.Да язык разметки страницы я знаю, у меня просто проблема в синтаксисе связки pl\sql и htmlодинарные кавычки самый мелкий символ, очень трудно их заметить в документации.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Select и UTL_SMTP Oracle
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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