Oracle UpdateXML 不接受有效的 xPath
Oracle UpdateXML not accepting a valid xPath
我在 XMLTYPE 列中有一个 XML,如下所示:
<n:ROOT xmlns:app="http://company/acms/content/DocType" xmlns:n="http://company/acms/content/DocType">
<Content>
<Definition>
<Code>DocType</Code>
<Version>1</Version>
</Definition>
<DocType>
<Info>
<DocumentType>DocType</DocumentType>
<DocumentClass>Other</DocumentClass>
<CustomerID>12323423</CustomerID>
<FinancialAccountID>12312312</FinancialAccountID>
<MSISDN>34534534</MSISDN>
<CustomerType>Consumer</CustomerType>
<CustomerSubType>Consumer-Platinum</CustomerSubType>
<FirstName>Name</FirstName>
<ServiceType>ServiceType</ServiceType>
<DocumentSource>BadValueHere</DocumentSource>
<BoxReferenceNumber>BoxXXX</BoxReferenceNumber>
<Industry>OTHERS</Industry>
<CreationDate>2015-01-01</CreationDate>
<DocumentID>6666</DocumentID>
<CreatedBy>UBIX</CreatedBy>
<DocumentOrigin>HD</DocumentOrigin>
<Notes>Document location on File System: /path/to/doc.TIF</Notes>
<Resource parseType="none">
<URL>/path/filename.pdf</URL>
<FileName>filename.pdf</FileName>
<MimeType>image/tiff</MimeType>
</Resource>
<FileType>tiff</FileType>
</Info>
<Permissions>
<GroupPermissions>
<GroupName>99</GroupName>
<Permissions>C</Permissions>
</GroupPermissions>
<GroupPermissions>
<GroupName>30</GroupName>
<Permissions>W</Permissions>
</GroupPermissions>
<GroupPermissions>
<GroupName>66</GroupName>
<Permissions>R</Permissions>
</GroupPermissions>
</Permissions>
</DocType>
</Content>
</n:ROOT>
现在我需要将 DocumentSource 元素更新为新值。
我尝试了以下查询:
SET CONTENT_DATA = UPDATEXML(CONTENT_DATA,
'/n:ROOT/Content/DocType/Info/DocumentSource/text()', 'Test')
where CONTENT_ID=6666;
但是,当我尝试 运行 它时,出现 Oracle 错误:
SQL 错误:ORA-31013:无效的 XPATH 表达式
31013. 00000 - "Invalid XPATH expression"
*原因:传递给函数的 XPATH 表达式无效。
*操作:检查 xpath 表达式是否存在语法错误。
更新文档XML 开启:https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions205.htm
它谈到了第 5 个元素来指定命名空间,但我没有运气让它工作:(
关于如何在 Google...
我的场景中使用它的示例绝对为零
有高手帮忙吗?
试试 xpath : //Content/DocType/Info/DocumentSource/text()
我在 XMLTYPE 列中有一个 XML,如下所示:
<n:ROOT xmlns:app="http://company/acms/content/DocType" xmlns:n="http://company/acms/content/DocType">
<Content>
<Definition>
<Code>DocType</Code>
<Version>1</Version>
</Definition>
<DocType>
<Info>
<DocumentType>DocType</DocumentType>
<DocumentClass>Other</DocumentClass>
<CustomerID>12323423</CustomerID>
<FinancialAccountID>12312312</FinancialAccountID>
<MSISDN>34534534</MSISDN>
<CustomerType>Consumer</CustomerType>
<CustomerSubType>Consumer-Platinum</CustomerSubType>
<FirstName>Name</FirstName>
<ServiceType>ServiceType</ServiceType>
<DocumentSource>BadValueHere</DocumentSource>
<BoxReferenceNumber>BoxXXX</BoxReferenceNumber>
<Industry>OTHERS</Industry>
<CreationDate>2015-01-01</CreationDate>
<DocumentID>6666</DocumentID>
<CreatedBy>UBIX</CreatedBy>
<DocumentOrigin>HD</DocumentOrigin>
<Notes>Document location on File System: /path/to/doc.TIF</Notes>
<Resource parseType="none">
<URL>/path/filename.pdf</URL>
<FileName>filename.pdf</FileName>
<MimeType>image/tiff</MimeType>
</Resource>
<FileType>tiff</FileType>
</Info>
<Permissions>
<GroupPermissions>
<GroupName>99</GroupName>
<Permissions>C</Permissions>
</GroupPermissions>
<GroupPermissions>
<GroupName>30</GroupName>
<Permissions>W</Permissions>
</GroupPermissions>
<GroupPermissions>
<GroupName>66</GroupName>
<Permissions>R</Permissions>
</GroupPermissions>
</Permissions>
</DocType>
</Content>
</n:ROOT>
现在我需要将 DocumentSource 元素更新为新值。
我尝试了以下查询:
SET CONTENT_DATA = UPDATEXML(CONTENT_DATA,
'/n:ROOT/Content/DocType/Info/DocumentSource/text()', 'Test')
where CONTENT_ID=6666;
但是,当我尝试 运行 它时,出现 Oracle 错误: SQL 错误:ORA-31013:无效的 XPATH 表达式 31013. 00000 - "Invalid XPATH expression" *原因:传递给函数的 XPATH 表达式无效。 *操作:检查 xpath 表达式是否存在语法错误。
更新文档XML 开启:https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions205.htm 它谈到了第 5 个元素来指定命名空间,但我没有运气让它工作:( 关于如何在 Google...
我的场景中使用它的示例绝对为零有高手帮忙吗?
试试 xpath : //Content/DocType/Info/DocumentSource/text()