• Oracle9i之xmltype应用(2)


    Oracle 9i提供的XML内置特性:

    Oracle 9i支持XMLType类型,它是一种Oracle 9i系统定义的对象类型。XMLType有内置的函数,有力的提供了推XML的创建,索检,索引等功能。

    用户可以使用SQL函数动态的产生XML文档。这些函数有:SYS_XMLGENSYS_XMLAGGPL/SQLDBMS_XMLGEN

    XML特性

    描述

    XMLType

    1XMLTypeoracle系统定义的数据类型,系统预定义了内部函数去访问XML数据。可以执行下面的任务:

    2、创建XMLType列,在XMLType列上面使用内置的函数。

    创建PL/SQL函数和存储过程,可以使用XMLType作为参数传入,或者作为返回参数传出。

    3、在XMLType列上面存储、索引、处理XML数据。

    DBMS_XMLGEN

    DBMS_XMLGEN是一个PL/SQL包,提转换一个sql查询的结果到标准的xml格式,返回的是一个XMLTye类型或者是CLOBDBMS_GEN是用c语言实现,放置在数据库的内核中。DBMS_XMLGEN包和DBMS_XMLQuery包的功能相相似。

    SYS_XMLGEN

    XMLGEN是一个SQL函数,它用来在sql查询中产生XMLDBMS_XMLGEN和其他包操作在查询水平,

    SYS_XMLGEN把一个值,对象类型,XMLType实例转换成一个XML文档。SYS_XMLGEN返回的类型是XMLType

    SYS_XMLAGG

    SYS_XMLAGG 是一个聚合函数,它聚合在XMLType类型上面。

    SYS_XMLAGG聚合所有的输入的XML文档合片断并且通过连接XML片断合增加上一层的标签产生单个XML文档

    UriTypes

    UriType 类型家族能够在数据库中存储和查询Ur-refsSYS.UriType是一抽象的数据类型,它提供功能去访问URL指向的数据。SYS.HttpUriTypeSYS.DBUriTypeUriType的子类型。SYS.HttpUriType存储的是HTTP URLsDBUriType存储的是intra-database 参考。你可以定义自己的SYS.UriType的子类型。

    如何使用XMLType

    创建XMLType列:

    CREATE TABLE warehouses(

    warehouse_id NUMBER(3),

    warehouse_spec SYS.XMLTYPE,

    warehouse_name VARCHAR2(35),

    location_id NUMBER(4));

    插入XMLType列数据

    INSERT into warehouses (warehouse_id, warehouse_spec) VALUES (1001, sys.XMLType.createXML(

    ’<Warehouse whNo="100">

    <Building>Owned</Building>

    </Warehouse>’));

    createXML的输入参数可以是任何的返回为varchar2的表达式或者式CLOBCreateXML能够检测XML是否的符合合适的,但是它不能检查XML的有效性。

    使用在XMLType列上sql查询

    SELECT

    w.warehouse_spec.extract(‘/Warehouse/Building/text()’).getStringVal()

    "Building"

    FROM warehouses w

    warehouse_spec是一个XMLType列,Extract()是操作在上面的函数

    查询结果如下:

    Building

    —————–

    Owned

    更新XMLType的列

    UPDATE warehouses SET warehouse_spec =

    sys.XMLType.createXML(

    ’<Warehouse whono="200">

    <Building>Leased</Building>

    </Warehouse>’));

    删去XMLType的列

    DELETE FROM warehouses e

    WHERE e.warehouse_spec.extract(’//Building/text()’).getStringVal()

    = ’Leased’;

  • 相关阅读:
    常见面试题
    3*0.1 == 0.3 将会返回什么?true 还是 false?
    poj_2186 强连通分支
    强连通分量、割点、桥
    最小生成树
    poj_2349 Kruskal 最小生成树
    poj_1258 prim最小生成树
    最短路径
    poj_1125 Floyd最短路
    poj_1860 SPFA
  • 原文地址:https://www.cnblogs.com/pekkle/p/6568787.html
Copyright © 2020-2023  润新知