zoukankan      html  css  js  c++  java
  • Informix IDS 11琐细经管(918考试)认证指南,第8局部:面向经管员的SQL特性(8)

    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

    genxmlschemagenxml 相反,专注的例外是它还前去 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 文档或片段。



    版权声明: 原创作品,批准转载,转载时请务必以超链接情势标明文章 原始理由 、作者信息和本声明。不然将究查法令责任。

  • 相关阅读:
    部署至Oracle数据库的注意事项
    当在centos上面部署项目时,mysql的一些驱动安装不上,
    drf利用redis做缓存是发生一点错误提示
    python字符串前面加个u代表什么
    在学习数据分析时,安装anaconda时遇到一点问题
    在使用scrapy框架爬取sina时,常见保存
    在linux上scrapyd部署scrapy项目时出现service_identity,并且不能识别其中的一个opentype模块
    如何在mysql增加一个和root权限一样的用户,安排
    mysq的root密码忘记,原来还有更优雅的解法
    mysql远程连接阿里云的Ubuntu服务器
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1972980.html
Copyright © 2011-2022 走看看