Вернуть набор записей в виде HTML для Oracle - PullRequest
3 голосов
/ 09 июня 2011

У меня есть база данных Oracle, и мне нужно отправлять уведомления по электронной почте на основе событий, происходящих в моем веб-приложении Dot Net. Уведомления по электронной почте в формате HTML. У меня есть разные шаблоны, которые используются в зависимости от уведомления по электронной почте, которое должно быть сгенерировано. Каждый подключен к Sproc. Поэтому, когда событие вызывается, я передаю идентификатор обработчику, и он вызывает sproc. Затем я получаю шаблон электронной почты в формате HTML с тегами, которые должны быть заменены полями из sproc. Затем я ищу и заменяю любые теги в шаблоне соответствующим полем из набора записей. Рецепт электронной почты вставляется, и электронное письмо отправляется в формате HTML. Это все отлично работает.

Однако теперь у меня есть требование показывать несколько строк в таблице в уведомлении по электронной почте. Так, например, подробности о книгах вышли из библиотеки. Я мог бы получить все строки и построить строки таблицы HTML на лету в точечной сети, перебирая набор записей и создавая новую строку для каждого набора записей, но это нарушило бы мой общий подход к замене тегов. Поэтому я хотел бы знать, могу ли я построить эти несколько строк в PL SQL и вернуть его как одно поле, где я могу заменить тег в своем html-шаблоне электронной почты содержимым поля из набора записей. Это поле будет содержать HTML-версию всех необходимых записей ... готовых к готовому в виде таблицы. Поэтому в моем шаблоне будет тег с именем OVerDueBooks, и я заменит этот тег полем Over_Due_Books из моего набора записей. В этом поле будут все записи о книгах в формате html, поэтому мне нужно только заменить тег содержимым.

спасибо, Мик

Ответы [ 2 ]

1 голос
/ 09 июня 2011

Какой объем данных? Пока собранная длина не превышает 4000 байтов, она не должна быть сложной.

Поиск STRAGG для различного механизма для объединения коллекции VARCHAR2 в одну строку.

Остальное должно быть SELECT '<tr>'||....||'</tr>' ....

Загляните в UTL_URL.ESCAPE, чтобы убрать все символы, которые могут помешать HTML.

0 голосов
/ 13 июня 2011

Спасибо, Гари,

Я получил этот маленький драгоценный камень от Sliqhtwv на EE, и его работы - удовольствие.Спасибо за вашу помощь .. очень признателен.

От Sliqhtwv:

drop table tab1 purge;
create table tab1(col1 char(1), col2 char(1), col3 char(1));

insert into tab1 values('a','1','A');
insert into tab1 values('b','2','B');
insert into tab1 values('c','2','C');
commit;

select xmlagg(xmlelement("TR",
    xmlforest(col1 as "TD",col2 as "TD",col3 as "TD"))).getclobval()
from tab1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...