扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共19页)
由于某种原因,XMLType XPath应用不允许输出标题结果。根据以下文档:
EXTRACT(XML)与EXISTSNODE函数类似。它应用一个VARCHAR2 XPath字符串,并返回一个包含XML片断的XMLType实例。
Extract仅返回一个XMLType。一个标量值是一个返回varchar2、数字或日期的函数。这意味着在XPath语句中,你可以使用node()之类的函数并返回一个XML片断。但如果你使用name(),它将返回指定元素的VARCHAR2名称,你会得到错误消息。
我经常需要使用name()和local-name()。许多时候,Count()是另一个很好用的函数。我决定编写我自己的析出函数。我希望对XMLType进行扩张,使其允许我增加自己的超载Extract。但我无法做到这一点。据信,XMLType是一个内置应用,而不是一个UDT,因此我不能对其进行扩张。
要达到相同的目的,还有别的方法。于是我建立自己的类型,它拥有一个XMLType属性;我建立自己的Extract,它叫做XSLT转换。现在如果在标准的XMLType和我自己建立的XMLType间来回移动会很麻烦,因此我加入骨架代码来调用Oracle XMLType。这样,我就能在正常使用XMLType的地方使用我的类型,只是它返回的是标量值。
这样做的好处是,我可以增加任何我认为需要的扩张。
在下面的代码中,我没有使用XMLType的每一个方法。我使用了一个超载Extract(),说明如何增加existsNode()和getStringVal()。如果你想对它进一步扩张,可以使用那个例子。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者