powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Передача письма с вложением. Готовое решение
25 сообщений из 274, страница 8 из 11
Передача письма с вложением. Готовое решение
    #38429935
K790
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
May12,

sry

Код: plsql
1.
2.
3.
4.
5.
6.
v_message:=v_message||'<table style="border: solid 0px #cccccc"  cellspacing="0" cellpadding="0"><tr BGCOLOR=#000099>';
FOR I IN (select owner, object_name  from all_objects)
  LOOP
     v_message:=v_message||'<tr><td>'||i.owner||'</td><td>'||i.object_name ||'</td></tr>'||utl_tcp.CRLF;
  END LOOP;
v_message:=v_message||'</table></body></html>'||utl_tcp.CRLF;
...
Рейтинг: 0 / 0
Передача письма с вложением. Готовое решение
    #38429998
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K790, спасибо. Так и делаю. Читаю отсюда . вот только кинуть на почту это хочется все-таки с использование mail_pkg.
...
Рейтинг: 0 / 0
Передача письма с вложением. Готовое решение
    #38431571
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
May12, кидай в свое удовольствие через:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
 MAIL_PKG.SEND( mailto => 'A. Ivanov <a.ivanov@yourcomany.ru>;, O.Petrov <o.petrov@yourcompany.ru>;'
                  , subject => 'Test subject'
                  , message => v_your_table_with_CSS_and_HTML
                  , mailfrom => 'Oracle Notify <no-reply@yourcompany.ru>;'
                  , mimetype => 'text/html'
                  , priority => 1
                  );



=))
...
Рейтинг: 0 / 0
Передача письма с вложением. Готовое решение
    #38432291
chameleon82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
May12chameleon82, без Вас не справлюсь. Помогите отправить таблицу
Код: plsql
1.
2.
3.
4.
5.
 select '<TD>'||'Помоги'||'</TD>' ||
          '<TD>'||'тупой'||'</TD>'||
          '<TD>'||'учиться!!!'||' </TD>'||
           chr(10)  as STR
      FROM DUAL CONNECT BY LEVEL < 5;



в теле письма? Молю...

Вот никак не могу понять, в чем проблема :)

Код: 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.
DECLARE
 message CLOB;
BEGIN
 message := '
<HTML>
       <HEAD>
              <STYLE>
                     table td {color: red; font: 25px solid red;padding:15px}
              </STYLE>
       </HEAD>
       <BODY>
             <TABLE BORDER=1>
                 <TR><TH>Что</TH><TH>Кому</TH><TH>Что делать</TH></TR>';

FOR x IN (
select '<TR><TD>'||'Помоги'||'</TD>' ||
          '<TD>'||'тупой'||'</TD>'||
          '<TD>'||'учиться!!!'||' </TD></TR>'||
           chr(10)  as STR
      FROM DUAL CONNECT BY LEVEL < 5)
LOOP
 message := message || x.STR;
END LOOP;
 message := message || '
         </TABLE>
    </BODY>
</HTML>
';
 
   MAIL_PKG.SEND( mailto =>   'maya_vetrova@почта.ru'
                  , subject => 'Письмо с таблицей'
                  , message => message                  
                  , mailfrom =>'Уведомление <no-reply@yourcompany.ru>;'
                  , mimetype =>'text/html'
                  );
 
END;          
...
Рейтинг: 0 / 0
Передача письма с вложением. Готовое решение
    #38432305
chameleon82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, Ваш запрос в PLSQL в Oracle9i выдаст одну строку вместо 4-ех, в версиях старше будет все норм. Это известная бага 9-го оракла при выборе произвольных данных из таблички DUAL. Будьте внимательны
...
Рейтинг: 0 / 0
Передача письма с вложением. Готовое решение
    #38432315
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это бага не оракла, а инструмента
...
Рейтинг: 0 / 0
Передача письма с вложением. Готовое решение
    #38432318
chameleon82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreizchameleon82,
интересно, у меня другая задача - читать письма с exchange 7, сохранять тело как "чистый" текст в CLOB, ну и как BLOB, сохрранять все аттачки как BLOB. делаю на яве в банке, больше всего трудностей с коонвертированием тела в "чистый" текст. у кого есть опыт поделитесь.
заранее спасибо.
всего.

Пока пакет может только с некоторыми ограничениями забирать почту с pop3, сейчас как раз работаю над получением почты через протоколы IMAP и MAPI (с последним работает exchange).
С конвертированием тела в текст в данном пакете особых проблем не наблюдалось, по крайней мере, с английским текстом проблем точно нет. Русский текст в моих тестах вполне декодируется, но я тестировал не на всех кодировках. Для приема почты с помощью mail_pkg попробуйте пересылать почту на pop3 ящик.
...
Рейтинг: 0 / 0
Передача письма с вложением. Готовое решение
    #38439342
mr Red
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пакет вылетает при попытке отправить аттач из blob

ORA-06502: PL/SQL: : character string buffer too small ошибка числа или значения
ORA-06512: на "STAGE.MAIL_PKG", line 179
ORA-06512: на line 29

прочитал ветку, проставил все varchar(25) в varchar(500), не помогло
все равно вылетает там же.

что делать?
...
Рейтинг: 0 / 0
Передача письма с вложением. Готовое решение
    #38439352
mr Red
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr Redпакет вылетает при попытке отправить аттач из blob

ORA-06502: PL/SQL: : character string buffer too small ошибка числа или значения
ORA-06512: на "STAGE.MAIL_PKG", line 179
ORA-06512: на line 29

прочитал ветку, проставил все varchar(25) в varchar(500), не помогло
все равно вылетает там же.

что делать?

все, вопрос снят
заменил практически все varchar(n) на varchar(500)
помогло
...
Рейтинг: 0 / 0
Передача письма с вложением. Готовое решение
    #38459981
oleggy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Вопрос скорее всего к chameleon82 или может быть кто то другой знает.
Данный скрипт отправки почты возможно выполнить в SQL Plus ?
...
Рейтинг: 0 / 0
Передача письма с вложением. Готовое решение
    #38461452
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oleggy, это мой пятый совет в форуме (пытаюсь немного помочь -2-): вам нужно скомпилировать предложенный пакет и выполнять из него процедуры. инструмент (sql plus или что-то другое) не имеет значения. Однако с таким объемом кода, на мой взгляд, удобнее работать в Toad или pl/sql developer.
...
Рейтинг: 0 / 0
Передача письма с вложением. Готовое решение
    #38461511
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Друзья, подскажите пожалуйста как отправить почту на внешний домен? приходит вот такая "отбивка":

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Не удалось выполнить доставку следующим получателям или группам:
maya_vetrova@othercompanydomain.com
Неверный формат адреса электронной почты. Допустимые адреса выглядят следующим образом: username@contoso.com. Проверьте адрес электронной почты получателя и повторите попытку отправки сообщения.

Диагностические сведения для администраторов:

Формирующий сервер: localhost.localdomain

maya_vetrova@othercompanydomain.com
#< #5.1.3 SMTP; 553 The sender must not be from a protected domain as the sender's IP is in the Inbound Mail Relay list.> #SMTP#

т.е. понятно что отправка, видимо, запрещена. Каким способом сделать отправку возможной?
...
Рейтинг: 0 / 0
Передача письма с вложением. Готовое решение
    #38461787
chameleon82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
May12Друзья, подскажите пожалуйста как отправить почту на внешний домен? приходит вот такая "отбивка":

т.е. понятно что отправка, видимо, запрещена. Каким способом сделать отправку возможной?

Ну это Вам к администратору почтового сервера, сложно сказать, какие фильтры у него настроены. Попробуйте в адресе почты отправителя указать правильный почтовый домен (или существующую учетную запись).
...
Рейтинг: 0 / 0
Передача письма с вложением. Готовое решение
    #38461977
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chameleon82Попробуйте в адресе почты отправителя указать правильный почтовый домен (или существующую учетную запись).
да, так и сделала и получила "отбивку". =)
...
Рейтинг: 0 / 0
Передача письма с вложением. Готовое решение
    #38462168
PooH_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вам же пишут "Допустимые адреса выглядят следующим образом: username@contoso.com"
Это настройка вашего почтового сервера, он другую почту слать не хочет. Надо это ограничение изменить или отключить. Но к ораклу это уже не имеет никакого отношения.
...
Рейтинг: 0 / 0
Передача письма с вложением. Готовое решение
    #38489215
Фотография l_kator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chameleon82,
спасибо вам огромное!! Вы спасли мой мозг :)

У меня всего 2 вопроса:
Как подписаться на рассылку обновленной версии пакета?
Куда слать пиво(цветы/вино/шоколад/котлеты)?
...
Рейтинг: 0 / 0
Передача письма с вложением. Готовое решение
    #38510871
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chameleon82, с наступающим и добра Вам.

Повторно наткнулась на проблему ограничения длины, в в этот раз, названия файла. Чтоб люди еще меньше мучились предлагаю заменить type attach_row на:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
type attach_row is record ( dirname varchar2(30)
                           , filename  varchar2(256)
                           , name  varchar2(256)
                           , mimetype varchar2(30)
                           , blobloc blob
                           , clobloc clob
                           , attachtype varchar2(30)
                           , contentid varchar2(256)
                           , disposition varchar2(25) default 'attachment'
                           );
...
Рейтинг: 0 / 0
Передача письма с вложением. Готовое решение
    #38510927
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
May12,

перекомпилируй с nls_length_semantic=char. и имей ввиду, что большинство файловых систем не поддерживают имена более 25 5 символов.
...
Рейтинг: 0 / 0
Передача письма с вложением. Готовое решение
    #38516395
chameleon82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
l_kator chameleon82,
спасибо вам огромное!! Вы спасли мой мозг :)

У меня всего 2 вопроса:
Как подписаться на рассылку обновленной версии пакета?
Куда слать пиво(цветы/вино/шоколад/котлеты)?

Пожалуйста ) Свежая версия пакета всегда на гитхабе

May12chameleon82, с наступающим и добра Вам.

И Вас с наступающим ) Ваше замечание пофиксил ;)

И всем тоже счастливого Нового года! )
...
Рейтинг: 0 / 0
Передача письма с вложением. Готовое решение
    #38534223
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!

Для того, чтоб не испытывать проблем, как у May12, я бы категорически предложил всем переменным типа varchar2 выдать размер с запасом. Например, в текущем варианте под папку отдается 30 символов. Люди, ну чем Вы думаете?? Под имя файла 256, под имя папки - 30 :) Да кто в Оракле трясется сегодня над каждым байтом??? Тем более в пакете, тем более, когда это имя и папка не хранится в БД? Сегодня ОЗУ считается гигабайтами, а не килобайтами!

Я бы рекомендовал под папку выделить 512 символов, под имя - ИМХО хватило бы 128, но пусть таки будет 256. Минимальным размером варчара советовал бы установить 64 символа, а не эти игры с 20-25-30. Потому что в связи с такой прижимистостью ПОСТОЯННО возникают различные артефакты. Вот например - недавно на Гитхабе оставлял отзыв, что из-за прижимистости были баги с отправкой писем начиная с октября (длина номера месяца переходила в двузначную величину). Ну и кому это надо??? Вылавливать такие баги...

С уважением, Вадим.
...
Рейтинг: 0 / 0
Передача письма с вложением. Готовое решение
    #38534227
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПС: присоединяюсь к поздравлениям с Новым годом. Путь и поздновато, конечно :)
Желаю всем побольше творческих решений, и поменьше ковыряния в старом, особенно чужом ;)
...
Рейтинг: 0 / 0
Передача письма с вложением. Готовое решение
    #38544489
AntonG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доработал процедуру получения почты, теперь не падает и не виснет при больших входящих письмах
GET_MAIL
Код: 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.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
 PROCEDURE GET_MAIL(mail_id number,lines number default null) IS
  answer varchar2(32767);
  content_bufer varchar2(32767);
  cnt number;
  bytes number;
  status varchar2(25);
  message_body clob;
  hdr_flag boolean;
  hdr_entity varchar2(255);
  hdr_entity_value varchar2(32717);
  boundary varchar2(128);
  part_header_flag boolean:=false;
  any_boundary_found boolean:=false;
  any_boundary_found_close boolean:=false;
 BEGIN
       IF MAIL_PKG.protocol != MAIL_PKG.POP3 THEN
        RAISE_APPLICATION_ERROR(-20000,'This feauture is not realised yet in proto '||MAIL_PKG.protocol);
       END IF;

       CMD(c,'LIST '||mail_id,status,answer); -- get message size
       MAILBOX(mail_id).bytes:=to_number(trim(substr(answer,instr(answer,' '))));

       IF  MAILBOX(mail_id).bytes >= 1048576 THEN
           PDEBUG('BUG: Message '|| mail_id ||' over 1Mb, ' ||  MAILBOX(mail_id).bytes || ' bytes' ,mail_pkg.debug_errors);
       END IF;

       CMD(c,CASE WHEN lines is NULL THEN 'RETR '||mail_id ELSE 'TOP '||mail_id||' 10' END,status,answer); -- read message headers
       BEGIN
         hdr_entity:='';hdr_entity_value:='';
         hdr_flag := true;
         if lines<>0 or lines is null then
            MAILBOX(mail_id).message:='';
            MAILBOX(mail_id).attachments := t_attachments();
         end if;
         dbms_lob.createtemporary(lob_loc => MAILBOX(mail_id).message, cache => true, dur => dbms_lob.call);
         LOOP
             answer :=utl_tcp.get_line(c, TRUE);  -- read result
             EXIT WHEN answer = '.';
             IF answer IS NULL THEN hdr_flag := false; END IF;
             IF hdr_flag THEN
                 IF ascii(substr(answer,0,1)) NOT IN (9,32) THEN
                   hdr_entity := substr(answer,1,instr(answer,':')-1);
                   MAILBOX(mail_id).HDR(hdr_entity):='';
                   hdr_entity_value := substr(answer,instr(answer,':')+2);
                 ELSE
                   hdr_entity_value := substr(answer,2);
                 END IF;

                 PDEBUG('HDR:'|| answer);
                 MAILBOX(mail_id).HDR(hdr_entity):= MAILBOX(mail_id).HDR(hdr_entity)
                                                 || MIME_DECODE(hdr_entity_value);
                 IF hdr_entity = 'Content-Type' THEN
                   if instr(answer,'boundary="')>0 then
                      extract_value(boundary,answer,'boundary');
                   end if;
                 END IF;
             ELSE
                
                 any_boundary_found := false;
                 any_boundary_found_close := false;
                 IF MAILBOX(mail_id).attachments.count>0 THEN
                 FOR incls IN MAILBOX(mail_id).attachments.first .. MAILBOX(mail_id).attachments.last
                 LOOP
                   if answer = '--' || MAILBOX(mail_id).attachments(incls).boundary then
                     any_boundary_found := true;
                   end if;
                   if answer = '--' || MAILBOX(mail_id).attachments(incls).boundary || '--' then
                     any_boundary_found_close := true;
                   end if;
                 END LOOP;
                 END IF;
								 if length(answer)=0 and length(content_bufer)>0 then
                   DBMS_LOB.APPEND ( MAILBOX(mail_id).attachments(MAILBOX(mail_id).attachments.last).content, content_bufer);
				         end if; 
                 if boundary is not null and
                    ( answer = '--' || boundary
                      or
                      any_boundary_found
                    )
                     then
                    part_header_flag:=true;
                    MAILBOX(mail_id).attachments.extend();
                    dbms_lob.createtemporary(lob_loc => MAILBOX(mail_id).attachments(MAILBOX(mail_id).attachments.last).content, cache => true, dur => dbms_lob.call);
                 elsif boundary is not null and
                   (  answer = '--' || boundary || '--'
                     or
                     any_boundary_found_close
                   )
                     then
                       null;
                 elsif part_header_flag and answer is null then
                    part_header_flag:=false;
                 else
                    IF part_header_flag THEN
                       IF ascii(substr(answer,0,1)) NOT IN (9,32) THEN
                          hdr_entity := substr(answer,1,instr(answer,':')-1);
                          MAILBOX(mail_id).attachments(MAILBOX(mail_id).attachments.last).HDR(hdr_entity):='';
                          hdr_entity_value := substr(answer,instr(answer,':')+2);
                       ELSE
                          hdr_entity_value := substr(answer,2);
                       END IF;
                       MAILBOX(mail_id).attachments(MAILBOX(mail_id).attachments.last).HDR(hdr_entity):=
                              MAILBOX(mail_id).attachments(MAILBOX(mail_id).attachments.last).HDR(hdr_entity)
                           || MIME_DECODE(hdr_entity_value);

                       IF hdr_entity = 'Content-Type' THEN
                          extract_value(MAILBOX(mail_id).attachments(MAILBOX(mail_id).attachments.last).boundary,answer,'boundary');
                          extract_value(MAILBOX(mail_id).attachments(MAILBOX(mail_id).attachments.last).charset,answer,'charset');
--                            PDEBUG(MAILBOX(mail_id).includes(MAILBOX(mail_id).includes.last).charset,mail_pkg.debug_messages);
                       ELSIF hdr_entity = 'Content-Transfer-Encoding' THEN
                            MAILBOX(mail_id).attachments(MAILBOX(mail_id).attachments.last).ContentTransferEncoding := hdr_entity_value;
                       END IF;

                    ELSE

                       -- BUG: BIG messages is very slow and prc can get "[SYS/PERM] Fatal error: Lost connection to input stream"
                      -- IF MAILBOX(mail_id).bytes < 1048576 THEN
                         IF MAILBOX(mail_id).attachments.count>0 THEN
                            if length(answer)>0 then
                               if length(content_bufer||answer) >= 32767 then
                                 DBMS_LOB.APPEND ( MAILBOX(mail_id).attachments(MAILBOX(mail_id).attachments.last).content, content_bufer);
                                 content_bufer := PARSE_LINE( answer
                                                             ,MAILBOX(mail_id).attachments(MAILBOX(mail_id).attachments.last).ContentTransferEncoding
                                                             ,MAILBOX(mail_id).attachments(MAILBOX(mail_id).attachments.last).charset);
                               else
                                 content_bufer := content_bufer||PARSE_LINE( answer
                                                                             ,MAILBOX(mail_id).attachments(MAILBOX(mail_id).attachments.last).ContentTransferEncoding
                                                                             ,MAILBOX(mail_id).attachments(MAILBOX(mail_id).attachments.last).charset);
                               end if;  
                            end if;
                         ELSE
                            IF length(answer)>0 THEN
                              DBMS_LOB.APPEND (MAILBOX(mail_id).message,answer);
                            END IF;
                         END IF;
                      -- END IF;

                    END IF;
                    PDEBUG(CASE part_header_flag WHEN TRUE THEN 'H' ELSE 'B' END || '-BODY:'||answer);
                 end if;
             END IF;

         END LOOP;
       EXCEPTION
         WHEN OTHERS THEN
         PDEBUG('ERR: GET MESSAGE ' ||mail_id || ' ERROR ',mail_pkg.debug_errors);
         RAISE;
       END;
       IF MAILBOX(mail_id).HDR.EXISTS('From') THEN
          MAILBOX(mail_id).MailFrom := MAILBOX(mail_id).HDR('From');
       END IF;
       IF MAILBOX(mail_id).HDR.EXISTS('MailTo') THEN
          MAILBOX(mail_id).MailTo := MAILBOX(mail_id).HDR('To');
       END IF;
       IF MAILBOX(mail_id).HDR.EXISTS('Return-Path') THEN
          MAILBOX(mail_id).ReturnPath := MAILBOX(mail_id).HDR('Return-Path');
       END IF;
       IF MAILBOX(mail_id).HDR.EXISTS('Subject') THEN
          MAILBOX(mail_id).Subject := MAILBOX(mail_id).HDR('Subject');
       END IF;
       IF MAILBOX(mail_id).HDR.EXISTS('Date') THEN
          BEGIN
            MAILBOX(mail_id).MailDate := TO_TIMESTAMP_TZ(MAILBOX(mail_id).HDR('Date'),'Dy, DD Mon YYYY HH24:MI:SS TZHTZM','NLS_DATE_LANGUAGE = ''american''');
          EXCEPTION WHEN OTHERS THEN NULL; END;
       END IF;
 END;


...
Рейтинг: 0 / 0
Передача письма с вложением. Готовое решение
    #38551518
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможен оффтоп.
Кто-нибудь пытался вставить, скажем, график роста своей зарплаты в рассылаемые письма?
какой процедурой (или на java) создать график, как его сохранить и вставить в письмо (вставка более менее понятна =) )?
...
Рейтинг: 0 / 0
Передача письма с вложением. Готовое решение
    #38551595
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
with t as (
  select (level-1)/3.141526 x, sin((level-1)/3.141526) y from dual connect by level<=21
)
   , taxis as (
  select round(199*(0-min(x))/(max(x)-min(x))) x, round(99*(0-min(y))/(max(y)-min(y))) y from t
)
   , tscale as (
  select round(199*(x - min(x) over()) / (max(x) over() - min(x) over())) x, 99-round(99*(y - min(y) over()) / (max(y) over() - min(y) over())) y from t
)
select 0.0 r, '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="100">' svgline from dual union all
select 0.1, '<rect width="200" height="100" style="fill: grey; stroke: black;" />'  from dual union all
select 0.2, '<line x1="0" y1="'||y||'" x2="199" y2="'||y||'" style="stroke: blue;"/>
<line x1="'||x||'" y1="0" x2="'||x||'" y2="99" style="stroke: blue;"/>'  from taxis union all
select rownum, '<line x1="'||lag(x,1,x) over(order by x)||'" y1="'||lag(y,1,y) over(order by x)||'" x2="'||x||'" y2="'||y||'" style="stroke: red;"/>' 
from tscale union all
select null, '</svg>' from dual
order by 1 nulls last
;
...
Рейтинг: 0 / 0
Передача письма с вложением. Готовое решение
    #38551895
Asmodeus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-, замечательно!
З.Ы. Какое, однако, забавное "пи" используется. :-)
...
Рейтинг: 0 / 0
25 сообщений из 274, страница 8 из 11
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Передача письма с вложением. Готовое решение
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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