2011-06-09 85 views
3

我有一個Oracle數據庫,需要根據我的DotNet Web應用程序中發生的事件發送電子郵件通知。電子郵件通知採用HTML格式。根據要生成的電子郵件通知,我使用了不同的模板。每個連接到一個Sproc。所以當事件被調用時,我將一個Id傳遞給處理程序,並調用一個存儲過程。然後,我得到HTML格式的電子郵件模板,並且標籤將被替換爲sproc中的字段。然後,我搜索並替換記錄集中相應字段的模板中的任何標籤。電子郵件recipeint被放入,並以HTML格式發送電子郵件。這一切工作正常。將記錄集返回爲Oracle的HTML

但是我現在有要求在電子郵件通知中顯示錶中的多行。例如,圖書館的書籍詳情。我可以通過迭代記錄集併爲每個記錄集生成一個新行來獲取所有行並在dotnet中快速生成HTML錶行,但是他會打破我常用的標記替換方法。 所以我想知道我可以在PL SQL中構建這些多行,並將它作爲一個字段返回,我可以用記錄集中字段的內容替換我的html電子郵件模板中的標記。這個字段將包含所有需要的記錄的HTML版本......準備好準備好作爲表格。因此,我的模板中會有一個名爲OVerDueBooks的標記,並使用我的記錄集中的Field Over_Due_Books替換該標記。該字段將以html格式擁有所有過期的書籍記錄,因此我只需將標籤替換爲內容即可。

謝謝米克

回答

0

感謝加里,

我對EE和其作品一種享受了這個小寶石從Sliqhtwv。感謝您的幫助..很多apprieciated。

從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 
1

什麼是數據量?只要收集的長度不超過4000字節,它應該不難。

搜索各種機制的STRAGG以將VARCHAR2集合聚合到單個行中。

其餘部分應該僅僅指剛成爲SELECT '<tr>'||....||'</tr>' ....

看的物質轉化爲UTL_URL.ESCAPE收拾掉可能與HTML干涉任何字符。

+0

感謝加里..我會去看看。我期待看到有一些HTML版本的dbms_xmlgen可以生成XML版本,或者是您建議的,並且必須在sproc中手工雕刻 – Doiremik 2011-06-09 12:55:35