oracle数据对象定义,oracle数据库的预定义的对象类型

Oracle9i release1 提供了很多有用的,预定义的类型。

类型 描述

xmltype 存储和操作xml数据

多种uri类型 使用这些存储和处理uri(全球统一资源定位),

如根据html 地址获得web 页面

多种any类型 用来定义xml变量并且处理各种类型

都是sys 用户创建的,创建这些类型的脚本:$ORACLE_HOME/rdbms/admin

13.5.1 xmltype

Oracle 9i release1 引入了对象类型xmltype。在oracle 9i release1 中使用xmltype必须加

前缀sys。在oracle 9i release2 之后不需要。

要使用xmltype必须要了解两件事请:

1. 它是一个oracle内置的对象类型。可以用在table的列上,也可以在plsql中作为变量的

类型来使用。

2. xquery,oracle查找和建立xml 文档的语言。在oracle 10g release2。

当然,我们还需要对xml 很熟悉,如基本概念,xpath等。

/**

使用和操作xmltype

**/

create table falls(

fall_id number,

fall xmltype

);

--使用xmltype的静态方法createxml插入xml数据

INSERT INTO falls VALUES (1, XMLType.CreateXML(

'<?xml version="1.0"?>

Munising Falls

Alger

MI

http://michiganwaterfalls.com/munising_falls/munising_falls.html

'));

INSERT INTO falls VALUES (2, XMLType.CreateXML(

'<?xml version="1.0"?>

Au Train Falls

Alger

MI

http://michiganwaterfalls.com/autrain_falls/autrain_falls.html

'));

INSERT INTO falls VALUES (3, XMLType.CreateXML(

'<?xml version="1.0"?>

Laughing Whitefish Falls

Alger

MI

'));

类型xmltype中内置了很多静态方法可以用来操作xml,具体地可以在plsqldeveloper中的

type栏目中查找xmltype。

插入的时候调用xmltype的createxml方法。下面的是静态方法existsNode的两种用法。

select fall_id from falls f where f.fall.existsNode('/fall/url')>0;--存在fall/url

select fall_id from falls where existsNode(fall,'/fall/url')>0;--fall列中存在fall下面有url的

在plsql中使用,并获得指定字符,采用静态方法extract:

--在plqldev中运行报错,在sqlplus中正确

<>

DECLARE

fall XMLType;

url VARCHAR2(100);

BEGIN

--将xml查询出来放入变量中

SELECT fall INTO demo_block.fall

FROM falls f

WHERE f.fall_id = 1;

--抽取xml文档,并获得指定字符

url := fall.extract('/fall/url/text( )').getStringVal;

DBMS_OUTPUT.PUT_LINE(url);

END;

注:fall.extract('/fall/url/text( )').getStringVal 调用静态方法extract提取相应数据,也就是

提供根目录下的url子目录下的文本,text()指url的体部文本。geteStringVal是文本的值。

select Upper(Xmltype.getStringVal(xmltype.extract(fall,'/fall/url/text()'))) from falls

where existsNode(fall,'/fall/url')>0;

上面的是将查询出来的html 地址变为大写。更多请参考具体资料和类型定义。

13.5.2 URI types

Uri类型是专门存储和处理uri(全球统一资源定位)的,如http地址。那么有三种子类型:

HttpuriType:和http相关的uri,如指向一个web 页面。(根据uri得到整个web 页面)

dburiType:支持具有xpath表达式的url

XdburiType:支持url和引用oracle xml db对象。Xml db对象是oracle内置的xml技术的集

合。

在oracle 9i release1 中需要指定前缀sys,在oracle 9i release2 中不需要。

-- user uritype

DECLARE

WebPageURL HttpUriType;

WebPage CLOB;

BEGIN

--建立一个uritype的实例,调用静态方法createuri,根据传入的uri获得整个页面,这样就获得了整个

www.163.com的页面

WebPageURL := HttpUriType.createUri(

'http://www.163.com');

--获得web页面的clob

WebPage := WebPageURL.getclob( );

--显示web页面中的指定字符

DBMS_OUTPUT.PUT_LINE((SUBSTR(WebPage,1,500)));

END;

结果是:

/p>

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

网易
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值