例: XSLT_SHRED_BATCH <xsl:param> - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - XMLデータ型

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/amr1556233250442.ditamap
dita:ditavalPath
ja-JP/amr1556233250442.ditaval
dita:id
B035-1140
Product Category
Software
Teradata Vantage

以下の例では、<xsl:param>パラメータを使用して、コンテキスト レベルの定数を定義する方法を示しています。

次に<xsl:param>の構文を示します。

<xsl:param name=”XML_TimeStamp”  select="date:date-time()"></xsl:param>

この例を実行する前に、必要な権限を持つテスト ユーザーが作成され、必要なテーブルが作成されていることを確認します。参照整合性ルールについては、XSLT_SHRED_BATCHとXSLT_SHREDの例の設定を参照してください。

XMLソース文書を格納するために使用するステージング テーブルにデータを挿入します。

DELETE Input_Docs;
DELETE Offer;

INSERT INTO Input_Docs(1, CREATEXML('<?xml version="1.0"?>
<Root>
 <predictixOfferMessage>
  <Offer><offerid>1000001</offerid></Offer>
  <mediaBlock><mediaBlockid>90000000010001</mediaBlockid></mediaBlock>
 </predictixOfferMessage>
 <predictixOfferMessage>
  <Offer><offerid>1000002</offerid></Offer>
  <mediaBlock><mediaBlockid>90000000010002</mediaBlockid></mediaBlock>
 </predictixOfferMessage>
</Root>'));

スタイルシート マッピングによってXSLT_SHRED_BATCHストアド プロシージャを呼び出し、ステージング入力テーブルに格納されるXMLデータをシュレッドします。次の引数を呼び出しに使用します。

  • queryStringは、次のようになります: sel * from xsltuser.Input_Docs
  • xsltMapping引数は、スタイルシートを入力とするCREATEXML関数を呼び出すことで指定します。このスタイルシートは、XML文書に適用されます。
  • externalContextは、defaultDatabaseをxsltuserに設定します。
  • resultCode:res.で返されます。操作が成功すると0が返されます。

この例では、タイムスタンプに設定され、さらにターゲット テーブルのいずれかの列で値として使用される<xsl:param>を示します。

CALL TD_SYSXML.XSLT_SHRED_BATCH('sel * 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:param>
<xsl:template match="/Root">
 <Transaction>
  <Insert>
   <Table>
    <Offer>
     <xsl:for-each select="predictixOfferMessage">
      <Row>
       <offerid> <xsl:value-of select="Offer/offerid"/></offerid>
       <mediaBlockid>
        <xsl:value-of select="mediaBlock/mediaBlockid"/>
       </mediaBlockid>
       <datetimecol default="{$XML_TimeStamp}">
        <xsl:value-of select="Offer/dummyelement"/>
       </datetimecol>
      </Row>
     </xsl:for-each>
    </Offer>
   </Table>
  </Insert>
 </Transaction>
 </xsl:template>
</xsl:stylesheet>'), 'defaultDatabase=xsltuser', :res);
結果: ターゲット テーブルで更新されたデータを表示するには次を実行します。SELECT * FROM Offer;
offerid     mediaBlockid                             datetimecol
----------  ---------------------------- ------------------------------
1000001     90000000010001               2014-11-04T15:22:55-08:00
1000002     90000000010002               2014-11-04T15:22:55-08:00