将记录集作为HTML返回给Oracle

时间:2011-06-09 11:33:01

标签: c# .net oracle oracle10g

我有一个Oracle数据库,需要根据我的Dot Net Web应用程序中发生的事件发送电子邮件通知。电子邮件通知采用HTML格式。我根据要生成的电子邮件通知使用不同的模板。每个都连接到Sproc。因此,当调用该事件时,我将一个Id传递给处理程序,并调用一个sproc。然后,我获得了HTML格式的电子邮件模板,并且标签将被替换为sproc中的字段。然后,我使用记录集中的相应字段搜索并替换模板中的任何标记。电子邮件recipeint被放入,电子邮件以HTML格式发送。一切正常。

但是我现在要求在电子邮件通知的表格中显示多行。例如,图书馆的书籍细节。我可以通过迭代记录集并为每个记录集生成一个新行来获取所有行并在点网中动态构建HTML表行,但是他会破坏我常用的标记替换方法。 所以我想知道我可以在PL SQL中构建这些多行并将其作为一个字段返回,我可以将html电子邮件模板中的标记替换为记录集中字段的内容。该字段将包含所有必需记录的HTML版本...准备好作为表格准备好。所以我在我的模板中有一个名为OVerDueBooks的标签,并用我的记录集中的Field Over_Due_Books替换该标签。该字段将以html格式包含所有逾期账簿记录,因此我只需将标记替换为内容。

谢谢米克

2 个答案:

答案 0 :(得分:1)

数据量是多少?只要收集的长度不大于4000字节,就不应该很难。

搜索STRAGG以获取将VARCHAR2集合聚合到一行的各种机制。

其余的应该是SELECT '<tr>'||....||'</tr>' ....

的问题

查看UTL_URL.ESCAPE以整理掉可能干扰HTML的所有字符。

答案 1 :(得分:0)

谢谢Gary,

我在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