XML 发布
操作 Version 11,您可以或许将 SQL 语句成效发布为照应的 XML 花式。这可以经过 GenXML 库供应的函数完成。
函数
常常,共有两种模范表率函数:一类前去 LVARCHAR,另一类前去 CLOB。一切函数都可以处置惩 NULL 值和非凡字符。若是成效年夜于 LVARCHAR (32739),则操作 clob 版本的饬令 —— genxmlclob
,而不克不及操作 genxml
。
上面展现了所供应的函数:
genxml
/genxmlclob
genxmlelem
/genxmlelemclob
genxmlschema
/genxmlschemaclob
genxmlquery
/genxmlqueryclob
genxmlqueryhdr
/genxmlqueryhdrclob
extract
/extractxmlclob
extractvalue
/extraxtxmlvalueclob
existsnode
idsxmlparse
genxml
genxml
将 SQL 成效行作为 XML 元素前去。您可以前去统统的行,也可以只前去单个列。在实行 order-by 之前准备成效集。若是必要凭证精确的按次实行,那么在对成效使用函数之前,必须操作导出表盘问凭证精确的按次获得成效集。
一样常常语法为:
genxml (root_element, rows)
个中, root_element
透露表现所选择的表的称号或表列,而 rows
透露表现渴望为 XML 元素付与的名字。
假定凭证以下体式花式界说表类:
清单 19. 表类界说
< CREATE TABLE >
要从表中选择整个行,操作以下代码:
清单 20. 选择整行
select genxml (cds, "cds") from cds; genxml <cds cdid="1" artist="Madonna " title="Like a Prayer "/> <cds cdid="1" artist="The Beatles " title="Let It Be "/> <cds cdid="1" artist="Queen " title="We Will Rock You "/> <cds cdid="1" artist="Genesis " title="Invisible Touch "/>
若是只选择 artist 列,操作以下语句:
清单 21. 选择 artist 列
select genxml (row(artist), "artist") from cds; genxml <artist artist="Madonna "/> <artist artist="The Beatles "/> <artist artist="Queen "/> <artist artist="Genesis "/>
genxmlelem
与
genxml
相反,genxmlelem
的每个列值作为独自的元素前去,这与genxml
的输出有所分比方。
清单 22. genxmlelem 示例
SELECT genxmlelem (cds, "cds") FROM cds; genxmlelem <cds> <row> <cdid>1</cdid> <artist>Madonna </artist> <title>Like a Prayer </title> </row> <row> <cdid>1</cdid> <artist>The Beatles </artist> <title>Let It Be </title> </row> <row> <cdid>1</cdid> <artist>Queen </artist> <title>We Will Rock You </title> </row> <row> <cdid>1</cdid> <artist>Genesis </artist> <title>Invisible Touch </title> </row> </cds>
genxmlschema
genxmlschema
与genxml
相反,专注的例外是它还前去 xml 情势。
清单 23. genxmlschema 示例
SELECT genxmlschema (row(artist), "artist") FROM cds WHERE artist = 'Queen'; genxmlschema <?xml version="1.0" encoding="en_US.819" ? > xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://schemas.ibm.com/informix/2006/sqltypes" xmlns="http://schemas.ibm.com/informix/2006/sqltypes" ElementFormDefault="qualified"> <xs:element name="artist"> <xs:complexType> <xs:sequence> <xs:element name="artist" type="xs:char(30)"/ > </xs:sequence> </xs:complexType> </xs:element> </xs:schema> <artist> <row> <artist>Queen </artist> </row> </artist>
genxmlquery
该函数将 SQL 盘问作为参数并以 XML 花式前去成效。
一样常常语法为:
genxmlquery (row, query)
个中
row
透露表现给定 XML 成效的称号,而query
透露表现将要实行的 SQL 盘问。
清单 24. genxmlquery 示例
execute function genxmlquery (' Titles from Queen ', "SELECT * from cds WHERE artist = 'Queen'"); (expression) <Titles from Queen> <row> <cdid>1</cdid> <artist>Queen </artist> <title>We Will Rock You </title> </row> </Titles from Queen>
操作该函数,您还可以确保以想要的体式花式对数据中止群集。
清单 25. 另一个 genxmlquery 示例
execute function genxmlquery ('cds', "SELECT * from cds order by artist"); (expression) <cds> <row> <cdid>1</cdid> <artist>Genesis </artist> <title>Invisible Touch </title> </row> <row> <cdid>1</cdid> <artist>Madonna </artist> <title>Like a Prayer </title> </row> <row> <cdid>1</cdid> <artist>Queen </artist> <title>We Will Rock You </title> </row> <row> <cdid>1</cdid> <artist>The Beatles </artist> <title>Let It Be </title> </row> </cds>
genxmlqueryhdr
与
genxmlquery
基础相反,然则它包罗了 XML 标题题目。
对于下一组函数,必要设立建设一个额外的 VP idsxmlvp。要设立建设该 vp,必要以用户 Informix 的身份实行以下饬令:
onmode -p 1 idsxmlvp
之后,将在 online.log 中看到如下信息:
13:54:43 Dynamically added 1 idsxmlvp VP
若是该 vp 不存在,将看到上面的错误消息:
(-9799): ERROR: Routine execution VP switch failed
Extract
Extract
针对 XML 列、文档或字符串计算 XPATH 表达式。
Extractvalue
与 extract 相反,
Extractvalue
将前去 XML 节点的值。
Existnode()
Extractvalue
可判别 XPath 能否至多产生一个 XML 元素。
Idsxmlparse
Extractvalue
在输特殊局精良的情形下前去 XML 文档或片段。
版权声明: 原创作品,批准转载,转载时请务必以超链接情势标明文章 原始理由 、作者信息和本声明。不然将究查法令责任。