この例では、XSLT_SHRED_BATCHとは異なりXSLT_SHREDに必要なgenexp宣言の使用方法を示します。
次の例のプライマリ インデックスは、更新用のキーとして使用されません。
この例を実行する前に、必要な権限を持つテスト ユーザーが作成され、必要なテーブルが作成されていることを確認します。参照整合性ルールについては、XSLT_SHRED_BATCHとXSLT_SHREDの例の設定を参照してください。
XMLソース文書を格納するために使用するステージング テーブルにデータを挿入します。
INSERT INTO DefaultValue3(C_id, C_Byteintc) values(1,1);
XSLT_SHREDストアド プロシージャを呼び出してXML文書をシュレッドします。次の引数を呼び出しに使用します。
- この例では、NEW XML文を使用してxmlDocが自動的に作成されます。
- xsltMapping引数は、スタイルシートを入力とするCREATEXML関数を呼び出すことで指定します。このスタイルシートは、XML文書に適用されます。
- externalContextはNULLです。
- resultCodeは:res.で返されます。操作が成功すると0が返されます。
CALL TD_SYSXML.XSLT_SHRED(NEW XML('<Root> <AllTypes> <Numeric> <Byteintc>1</Byteintc> <Smallintc>200</Smallintc> <Intc>200</Intc> <Floatc>200</Floatc> <Decimalc>200</Decimalc> <Numberc>1200</Numberc> </Numeric> </AllTypes> <AllTypes> <Numeric> <Byteintc>2</Byteintc> <Smallintc>400</Smallintc> <Intc>400</Intc> <Floatc>400</Floatc> <Decimalc>400</Decimalc> <Numberc>1400</Numberc> </Numeric> </AllTypes></Root>'), CREATEXML('<?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/Root"> <Transaction> <Update> <Table> <xsltuser.DefaultValue3 pkey="C_Byteintc"> <xsl:for-each select="AllTypes"> <Row> <C_Id genexp="cast(? as int)" default="10"> <xsl:value-of select="Numeric/Bytec"/> </C_Id> <C_Byteintc genexp="cast(? as byteint)"> <xsl:value-of select="Numeric/Byteintc"/> </C_Byteintc> <C_Smallintc genexp="cast(? as smallint)" > <xsl:value-of select="Numeric/Smallintc"/> </C_Smallintc> <C_Intc genexp="cast(? as integer)"> <xsl:value-of select="Numeric/Intc"/> </C_Intc> </Row> </xsl:for-each> </xsltuser.DefaultValue3> </Table> </Update> </Transaction> </xsl:template> </xsl:stylesheet>'), '',:res);
結果: ターゲット テーブルで更新されたデータを表示するには次を実行します。
SELECT * FROM DefaultValue3;
C_Id C_Byteintc C_Smallintc C_Intc ----------- ---------- ----------- ----------- 10 1 200 200