<xsl:value-of>を持つcolumn要素は、defaultという属性を持つことができます。defaultを指定すると、その値は不在/空の要素で挿入されます。それ以外の場合、Teradata NULLが返されます。
以下に、デフォルト値を使用する構文を示します。
<Row> <C_Name default=”Teradata Employee” > <xsl:value-of select=" …../AbsentOREmptyElement" /> </C_Name > </Row>
この例を実行する前に、必要な権限を持つテスト ユーザーが作成され、必要なテーブルが作成されていることを確認します。参照整合性ルールについては、XSLT_SHRED_BATCHとXSLT_SHREDの例の設定を参照してください。
XMLソース文書を格納するために使用するステージング テーブルにデータを挿入します。
DELETE Input_Docs; DELETE DefaultValue; INSERT INTO Input_Docs(1,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>3000-09-09</Datec> <Timec>12:12:12</Timec> <Timewzc>12:12:12+00:00</Timewzc> <TimeStampc>3000-09-09T12:12:12</TimeStampc> </DateTime> </AllTypes> </Root>'));
スタイルシート マッピングによってXSLT_SHRED_BATCHストアド プロシージャを呼び出し、ステージング入力テーブルに格納されるXMLデータをシュレッドします。次の引数を呼び出しに使用します。
- queryStringは、次のようになります: SELECT id, xmldoc FROM xsltuser.Input_Docs
- xsltMapping引数は、スタイルシートを入力とするCREATEXML関数を呼び出すことで指定します。このスタイルシートは、XML文書に適用されます。
- この例では、externalContextはNULLです。
- resultCodeは:res.で返されます。操作が成功すると0が返されます。
CALL TD_SYSXML.XSLT_SHRED_BATCH('SELECT id, xmldoc FROM xsltuser.Input_Docs', 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.DefaultValue> <xsl:for-each select="AllTypes"> <Row> <datec><xsl:value-of select="DateTime/Datec"/></datec> <timec><xsl:value-of select="DateTime/Timec"/></timec> <timewzc><xsl:value-of select="DateTime/Timewzc"/></timewzc> <timestampc> <xsl:value-of select="DateTime/TimeStampc"/> </timestampc> <timestampwzc default="{$XML_TimeStamp}"> <xsl:value-of select="DateTime/TimeStampwzc"/> </timestampwzc> </Row> </xsl:for-each> </xsltuser.DefaultValue> </Table> </Insert> </Transaction> </xsl:template> </xsl:stylesheet>'), '',:res);
結果: ターゲット テーブルで更新されたデータを表示するには次を実行します。SELECT * FROM DefaultValue;
Timestampwzc列の最後のタイムスタンプはデフォルト値です。
datec | timec | timewzc | timestampc | timestampwzc |
---|---|---|---|---|
2000/09/09 | 04:12:12.000000 | 12:12:12.000000+00:00 | 2000-09-09 05:12:12.000000 | 2000-09-09 12:12:12.000000+00:00 |
3000/09/09 | 04:12:12.000000 | 12:12:12.000000+00:00 | 3000-09-09 05:12:12.000000 | 2014-11-04 15:22:56.000000-08:00 |