あなたが使用するためにSQL * Plusを使用している場合、それは本当に簡単に思えます
SQL> set markup html on;
sQL * Plusウィンドウに素敵な結果が表示されます。私たちは夜間に実行され、結果の電子メールを多数の人々に送信するOracleジョブがあります。そのメッセージに含まれるように、SQLステートメントをHTMLテーブルでラップします。それを行う最良の方法は何ですか?
dbms_xmlgen
を使用してxmlを生成することができます。例:
select dbms_xmlgen.getxml('select * from dual') as xml from dual;
XML
---
<?xml version="1.0"?>
<ROWSET>
<ROW>
<DUMMY>X</DUMMY>
</ROW>
</ROWSET>
代わりに getxmltype
を使用すると、おそらく次のようにxslt
変換を適用できます。
select dbms_xmlgen.getxmltype('select * from dual').transform(XMLType(
'<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<body>
<table border="1">
<tr bgcolor="cyan">
<xsl:for-each select="/ROWSET/ROW[1]/*">
<th><xsl:value-of select="name()"/></th>
</xsl:for-each>
</tr>
<xsl:for-each select="/ROWSET/*">
<tr>
<xsl:for-each select="./*">
<td><xsl:value-of select="text()"/> </td>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>')).getclobval() as html from dual;
HTML
----
<html>
<body>
<table border="1">
<tr bgcolor="cyan">
<th>DUMMY</th>
</tr>
<tr>
<td>X</td>
</tr>
</table>
</body>
</html>
xsltのTom Kyteへのnbクレジット 彼のブログから 。もう少し高度なバージョンについては this other post も参照してください。