暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

数据猿 2023-08-18
171

金仓数据库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

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论