人大金仓金仓数据库KingbaseES xml特性

本文介绍了KingbaseES中的xmltype特性,包括其在Oracle环境下的使用,如作为数据类型、存储选项、成员函数以及兼容Oracle的XML处理。特别提到不支持直接创建索引和某些特定函数在PLSQL中的行为。
摘要由CSDN通过智能技术生成

金仓数据库KingbaseES xml特性

关键字:

KingbaseES、xml、xmltype

1.oracle下的xmltype 类型

XML数据存储

XMLTYPE可以作为表或者视图的列的数据类型,也可以用作函数的参数类型。Oracle默认将XML数据存储在关系对象列中,也可以指定存储在CLOB或者 binary XML列中。

XMLTYPE有自己的方法,其中既有构造函数,普通成员函数,也有静态成员函数。XMLTYPE支持的成员函数。

getClobVal()
   xmltype('<a><b>1</b><c>2</c></a>').extract('/a/b/text()').getclobval() 
getStringVal()
   xmltype('<a><b>1</b><c>2</c></a>').extract('/a/b/text()').getstringval()
getNumberVal()
   xmltype('<a><b>1</b><c>2</c></a>').extract('/a/b/text()').getnumberval()
existsnode
   xmltype('<a><b>1</b><c>2</c></a>').existsnode('/a/b/text()')
extract
   xmltype('<a><b>1</b><c>2</c></a>').extract('/a/b')
isfragment()
   xmltype('<a><b>1</b><c>2</c></a>').isfragment()
createXML(xmlData in clob)
   xmlType.createXML('<a><b>2</b><c>3</c></a>'));
createXML(xmlData in varchar2)
   xmlType.createXML('<a><b>1</b></a>')

等等。

XMLTYPE是Oracle的系统内置类型,Oracle不支持直接在对象关系表中XMLTYPE列上创建索引,但可以使用XMLTYPE列创建基于函数的索引。XMLTYPE可作为||操作符的左值或右值参数,这时将隐式转换为字符串类型参与运算。XMLTYPE不支持其他操作符,XMLTYPE类型支持对XML数据的合法性进行检查。支持字符串类型向XMLTYPE类型进行隐式转换。不支持字符串类型向XMLTYPE类型进行强制转换。支持XMLTYPE类型向varchar2类型强制转换。

2. 兼容oracle模式下的新增xmltype 类型

KES内置xml类型,是一个简单内置类型,该类型支持存储XML数据。xml类型可以作为表或者视图的列类型,也可用于函数的参数或者返回值类型。支持由xml类型向text/bpchar/varchar类型的隐式类型转换,但不支持反向的隐式类型转换。支持在xml类型与text/bpchar/varchar类型之间的双向隐式类型转换,以及许多操作xml类型数据的Oracle兼容函数。xml类型支持对XML数据的合法性进行检查,内置的XML类型支持函数extract()、existsnode(),内置的XML类型支持函数xmlagg()及其转换函数xmlconcat2()。但是在实际的使用过程中,需要兼容oracle的xmltype数据类型,方便调用成员函数用于xml 数据处理。新增的XMLTYPE与已有xml类型兼容,支持所有xml类型处理函数。支持XML格式检查。 对于不合格的XML字符串,xml解析器的行为受GUC参数xmloption控制。当xmloption=content(默认)时,xml解析器将不合格的输入字符串当作XML元素内容;当xmloption=document时,xml解析器对不合格的输入字符串报错处理。对于空字符串或空值null,均会被xml解析器作为null处理,生成的实例为null。这个处理方式与内置的xml类型完全相同。
file

在实现方面,由于kes 需要兼容xmltype,需要增添成员函数,所以对函数嵌套是的数据类型比较重要。如图:

file

Xmlagg 接受 xml 或者 xmltype 类型返回相对相应的值,在sql 中可以实现xml 与xmltype 的相互转换,但是在plsql 中尚不能实现 xml 到xmltype转换,需注意。
如果是返回的xmltype可以直接用成员函数,以下部分是未兼容部分。

CREATENONSCH  EMABASEDXML
CREATESCH  EMABASEDXML
GETNAMESPACE
GETNUMBERVAL
GETROOTELEMENT
GETSCHEMAURL
ISSCHEMABASED
ISSCHEMAVALID
ISSCHEMAVALIDATED
SCHEMAVALIDATE
SETSCHEMAVALIDATED
TOOBJECT
TRANSFORM
GETBLOBVAL

更多信息,参见https://help.kingbase.com.cn/v8/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值