Oracle XMLQuery XMLEXISTS属性的语法等于文字

时间:2014-12-19 15:29:34

标签: xml oracle11g

我在表格中有一个XMLTYPE列。我想根据限定的where子句从表中选择行。我可以在我将属性xmlcast到值的地方运行语法。我使用XMLExists时无法返回任何行。我试过[returnCode]和[@returnCode]。我不确定我是否在query_string中正确指定了命名空间,我所拥有的是我在网络和Oracle OTN上找到的示例。其他似乎并不多。

FROM 
PRDOPTDIR113.OPTIM_TRANSACTION_CONTENT T
WHERE
XMLExists('declare namespace optns="http://www.ibm.com/optim/report/v11.3.0.0"; (::)
          /optns:OptimReport/CommonContent[@returnCode="0"]' PASSING T.XMLDATA)
--XMLCAST(extract(T.XMLDATA,'/OptimReport/CommonContent/@returnCode',
--            'xmlns=http://www.ibm.com/optim/report/v11.3.0.0') as INT) = 0
;

有什么建议吗?

完整的sqlplus输入

SET HEADING ON;
set pagesize 60 echo off;
SET LINESIZE 30000 LONG 30000 LONGCHUNKSIZE 30000 Trimspool on;
SELECT
CREATE_TIME
, XMLCAST(extract(T.XMLDATA,'/OptimReport/@reportType','xmlns=http://www.ibm.com/optim/report/v11.3.0.0') as VARCHAR2(30)) as reporttype
FROM 
PRDOPTDIR113.OPTIM_TRANSACTION_CONTENT T
WHERE
--XMLExists('declare namespace optns="http://www.ibm.com/optim/report/v11.3.0.0"; (::)
--          /optns:OptimReport/CommonContent[@returnCode="0"]' PASSING T.XMLDATA)
XMLCAST(extract(T.XMLDATA,'/OptimReport/CommonContent/@returnCode',
            'xmlns=http://www.ibm.com/optim/report/v11.3.0.0') as INT) = 0
;
exit

树中的节点

<OptimReport xmlns="http://www.ibm.com/optim/report/v11.3.0.0" xmlns:ns2="http://www.ibm.com/optim/common/v11.3.0.0" reportTitle="Convert Report" reportType="Convert">
  <CommonContent returnCode="0">
<directory databaseVersion="11.2.0" databaseVendor="Oracle" description="PRDOPTDIRUUS" name="PRDOPTDIRUUS"/>
<solution version="11.3.0.0" name="IBM InfoSphere Optim Test Data Management Solution"/>
<runtime version="" name="Distributed"/>
<overview timeElapse="3617" timeFinished="2014-12-03T20:21:22.000-05:00" timeStarted="2014-12-03T19:21:05.000-05:00" serverUserId="opmm02m" clientUserId="opmm02m" serverName="TPCTL1"/>
  </CommonContent>

0 个答案:

没有答案
相关问题