以下の例では、<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