XMLPUBLISH_STREAMストアド プロシージャは、1つ以上のXML文書をストリームとしてパブリッシュします。パブリッシュする文書全体はすべて一度に実体化されるわけではありません。代わりに、XMLPUBLISH_STREAMからはXMLがいくつかの部分に分けて返されます。クライアント側でそれらを連結することにより、整形式XML文書が作成されます。これにより、メモリに制約があっても大きい文書の構築ができます。
文書の処理中に、XMLPUBLISH_STREAMは特定の特殊文字を文字エンティティ参照に変換します。例えば、<は<に変換され、&は&に変換されます。これは、データ内の特殊文字をエスケープして、適切に形成されたXMLを生成するために行なわれます。空の文字列に対しては空の要素が返され、NULL文字列の場合は要素が失われます。
ストアド プロシージャは、入力引数として以下を受け取ります。
- SQL問合わせ文字列
- SQL問合わせの結果を目的のXMLツリー構造に変換するマッピング スタイルシート。
マッピングを指定しない(NULLをXslt引数として渡す)場合、プロシージャは出力としてカノニカルXML表現を返します。
プロシージャは1 つの列XmlStringからなる結果セットを返します。クライアント アプリケーションはXmlString列の値を連結して、パブリッシュするXML文書を作成します。
documentGroupingSpecを指定すると、XMLPUBLISH_STREAMは、documentGroupingSpecに基づいて問合わせ結果をグループ化することにより、複数のXML文書を構築できるようにします。結果セットには、文書の区切りをマーク付けするNULLが組み込まれます。
推奨事項: 以下の場合にXMLPUBLISH_STREAMの代わりにXMLPUBLISHストアド プロシージャを使用します。
- パブリッシュする文書のサイズが小さい
- Teradata特有の命令(teradata_groupなど)を使用する必要がない
- 複数の文書をパブリッシュする必要がある