Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Select и UTL_SMTP Oracle / 22 сообщений из 22, страница 1 из 1
21.07.2016, 03:28:12
    #39277426
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select и UTL_SMTP Oracle
Подскажите как можно через UTL_SMTP отправлять результат select, например Select * from v$version;
...
Рейтинг: 0 / 0
21.07.2016, 06:34:45
    #39277443
Select и UTL_SMTP Oracle
SAS2014,

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

вызовами функций пакета.
а пример напишешь?
...
Рейтинг: 0 / 0
21.07.2016, 07:45:56
    #39277456
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select и UTL_SMTP Oracle
...
Рейтинг: 0 / 0
21.07.2016, 09:22:23
    #39277513
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select и UTL_SMTP Oracle
select -> XML + XSLT = html
18103532
...
Рейтинг: 0 / 0
21.07.2016, 09:58:43
    #39277548
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select и UTL_SMTP Oracle
Почитал инфу которую подсказал 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
21.07.2016, 10:08:29
    #39277562
Select и UTL_SMTP Oracle
SAS2014,

Понятно, что очень приятно каждый день на протяжении лет получать напоминание, когда создана БД.
Но что будет делать получатель письма, если получит, что статус бд CLOSED?
...
Рейтинг: 0 / 0
21.07.2016, 11:05:17
    #39277617
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select и UTL_SMTP Oracle
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
22.07.2016, 01:27:31
    #39278286
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select и UTL_SMTP Oracle
трудоголик сизифSAS2014,

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

Эта запрос про базу это просто для инфы, основная инфа - free space.
...
Рейтинг: 0 / 0
22.07.2016, 01:28:15
    #39278287
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select и UTL_SMTP Oracle
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
22.07.2016, 02:30:46
    #39278294
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select и UTL_SMTP Oracle
Или я дурак)) или лыжи не едут ...
Код: 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
22.07.2016, 09:24:10
    #39278355
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select и UTL_SMTP Oracle
1. Не работайте по SYS.
2. Изучите вашу среду разработки. Она подскажет, где ошибка.
...
Рейтинг: 0 / 0
22.07.2016, 09:27:57
    #39278360
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select и UTL_SMTP Oracle
dmdmdm1. Не работайте по SYS.
2. Изучите вашу среду разработки. Она подскажет, где ошибка.

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

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

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



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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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


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