この例では、XSLT_SHREDの使用方法を示します。
この例を実行する前に、必要な権限を持つテスト ユーザーが作成され、必要なテーブルが作成されていることを確認します。参照整合性ルールについては、XSLT_SHRED_BATCHとXSLT_SHREDの例の設定を参照してください。
XSLT_SHREDストアド プロシージャを呼び出してXML文書をシュレッドします。次の引数を呼び出しに使用します。
- この例では、NEW XML文を使用してxmlDocが自動的に作成されます。
- xsltMapping引数は、スタイルシートを入力とするCREATEXML関数を呼び出すことで指定します。このスタイルシートは、XML文書に適用されます。
- externalContextはNULLです。
- resultCodeは:res.で返されます。操作が成功すると0が返されます。
CALL TD_SYSXML.XSLT_SHRED(NEW XML(
'<Root>
<AllTypes>
<DateTime>
<Datec>2000-09-09</Datec>
<Timec>12:12:12</Timec>
<Timewzc>12:12:12+00:00</Timewzc>
<TimeStampc>2000-09-09T12:12:12</TimeStampc>
<TimeStampwzc>2000-09-09T12:12:12+00:00</TimeStampwzc>
</DateTime>
</AllTypes>
<AllTypes>
<DateTime>
<Datec>2000-09-10</Datec>
<Timec>12:12:12</Timec>
<Timewzc>12:12:12+00:00</Timewzc>
<TimeStampc>2000-09-09T12:12:12</TimeStampc>
</DateTime>
</AllTypes>
</Root>'),
CREATEXML('<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:date="http://exslt.org/dates-and-times"
extension-element-prefixes="date" version="1.0" >
<xsl:param name="XML_TimeStamp" select="date:date-time()"/>
<xsl:template match="/Root">
<Transaction>
<Insert>
<Table>
<xsltuser.DefaultValue4>
<xsl:for-each select="AllTypes">
<Row>
<C_Datec genexp="(? as Date)"><xsl:value-of select="DateTime/Datec"/></C_Datec>
<C_Timec genexp="(? as Time(6))">
<xsl:value-of select="DateTime/Timec"/></C_Timec>
<C_Timewzc genexp="(? as Time(6) WITH TIME ZONE)">
<xsl:value-of select="DateTime/Timewzc"/></C_Timewzc>
<C_TimeStampc genexp="(? as TIMESTAMP(6))">
<xsl:value-of select="DateTime/TimeStampc"/></C_TimeStampc>
<C_TimeStampwzc genexp="(? as TIMESTAMP(6) WITH TIME ZONE)" default="{$XML_TimeStamp}">
<xsl:value-of select="DateTime/TimeStampwzc"/></C_TimeStampwzc>
</Row>
</xsl:for-each>
</xsltuser.DefaultValue4>
</Table>
</Insert>
</Transaction>
</xsl:template>
</xsl:stylesheet>'), '',:res);
結果: ターゲット テーブルで更新されたデータを表示するには次を実行します。SELECT * FROM DefaultValue4;
| C_Datec | C_Timec | C_Timewzc | C_TimeStampc | C_TimeStampwzc |
|---|---|---|---|---|
| 00/09/10 | 12:12:12.000000 | 12:12:12.000000+00:00 | 2000-09-09 12:12:12.000000 | 2014-05-07 05:08:17.000000-04:00 |
| 00/09/09 | 12:12:12.000000 | 12:12:12.000000+00:00 | 2000-09-09 12:12:12.000000 | 2000-09-09 12:12:12.000000+00:00 |