请教下各位前辈,我使用sql查询xmltype类型的字段,可就是没返回结果,而使用参考文档执行类似的查询都能获得正确的数据,不知是什么原因呢?
我使用的sql:
create table topics(report_id NUMBER,profile XMLTYPE);insert into topics(report_id,profile) select report_id,XMLTYPE(profile) from config_data where report_id=65;
commit;执行该插入后,将插入CLOB字段值:‘<Report DisplayType="std" NocTimeFrame="" RefreshInterval="0" forwardTo="/MyTopaz/1/Report_65.jsp" id="Report_65" name="监控报告" reportTitle="系统监控报告" type="forward"><DataView_1 bbFlags="1" bbName="Daily Mail Multi Data Block" bbTitle="性能概要" category="dataviews.category.performance-update" checkIfToIgnoreExtremeValues="true" className="com.mercury.topaz.reportsExt.customreport.SubReportDefinition" dataViewKeyName="dataviews.key.name.alert.total.count" dimesionsGroup="1" media="media.table" profileType="1" subId="13" title="性能概要" width="wide">
<!--<MultiDataView bbName="Daily Mail Multi Data Block" bbFlags="1">-->
<!-- 1.Alerts 2.Availability,Total trans,Failed,Timed Out-->
<!-- Alerts total count-->
<DataView bbFlags="1" bbName="Alerts By Severity" profileType="1">
<BreakDownFilters>
<!-- Breakdown by Transaction -->
<BreakDown id="2"/>
</BreakDownFilters>
<InputData>
<XAxis action="remove"/>
<Measurement action="remove"/>
<ProfileFilter ProfileId="202" action="replace" selected="yes"/>
</InputData>
<DimensionGroups>
<DimensionGroup>1</DimensionGroup>
</DimensionGroups>
</DataView>
<!-- Alerts critical severity-->
<DataView bbFlags="1" bbName="Alerts By Severity" profileType="1">
<InputData>
<XAxis action="remove"/>
<Measurement action="replace" dimension_name="AlertSeverity" selected="yes"/>
<!-- only with critical severity -->
<DiscreteFilter action="add" dimension_name="AlertSeverity" selected="yes">
<DiscreteData>50</DiscreteData>
</DiscreteFilter>
<ProfileFilter ProfileId="202" action="replace" selected="yes"/>
CONTINUOUS_FILTERS_TO_1
</InputData>
<DimensionGroups>
<DimensionGroup>1</DimensionGroup>
</DimensionGroups>
</DataView>
<!-- server availability with timed out,failed and total-->
<DataView bbFlags="1" bbName="Daily Mail Server Avalability" checkIfToIgnoreExtremeValues="true">
<InputData>
<XAxis action="remove"/>
<Measurement action="remove"/>
<ProfileFilter ProfileId="202" action="replace" selected="yes"/>
CONTINUOUS_FILTERS_TO_1
</InputData>
<DimensionGroups>
<DimensionGroup>1</DimensionGroup>
</DimensionGroups>
</DataView>
<!-- order: Alert Total,Alert Total Critical,Total Transactions-->
<Table_1 firstCell="false" order="ServiceAvailability,Total,Total2,Failed,TimedOutTotal" resourceKey="s_daily_mail" type="mailSummary">
<Properties>
<Property name="width" value="600"/>
<Property columnName="ServiceAvailability" name="class" value="mailReportTotal"/>
<Property columnName="Total" name="class" value="mailReportTotal"/>
<Property columnName="Total2" name="class" value="mailReportTotalBold"/>
<Property columnName="Failed" name="class" value="mailReportTotal"/>
<Property columnName="TimedOutTotal" name="class" value="mailReportTotal"/>
<Property columnName="TimedOutTotal" name="filterOut" value="externalValues"/>
<Property allCells="yes" name="align" value="left"/>
</Properties>
<Integers intKeyValues="Total,Total2,Failed,TimedOutTotal"/>
</Table_1>
</DataView_1><DataView_2 bbFlags="1" bbName="Overall Performance of Locations in Mail report" bbTitle="位置的性能" category="dataviews.category.performance-update" checkIfToIgnoreExtremeValues="true" className="com.mercury.topaz.reportsExt.customreport.SubReportDefinition" dataViewKeyName="dataviews.key.name.perform.location" dimesionsGroup="1" media="media.table" profileType="1" subId="15" title="位置的性能" width="wide">
<BreakDownFilters>
<!-- Breakdown by Location -->
<BreakDown id="3"/>
</BreakDownFilters>
<InputData>
<XAxis action="remove"/>
<Measurement action="replace" dimension_name="LocationName" selected="yes"/>
<ProfileFilter ProfileId="202" action="replace" selected="yes"/>
</InputData>
<DimensionGroups>
<DimensionGroup>1</DimensionGroup>
</DimensionGroups>
<Table_2 firstCell="false" order="LocationName,Good,Warning,Poor,Failed,Total,TimedOutTotal" resourceKey="dailyMail" type="IgnoreExtremeValuesTable">
<Properties>
<Property name="width" value="600"/>
<Property columnName="LocationName" name="width" value="40%"/>
<Property columnName="Good" name="width" value="10%"/>
<Property columnName="Warning" name="width" value="10%"/>
<Property columnName="Poor" name="width" value="10%"/>
<Property columnName="Failed" name="width" value="10%"/>
<Property columnName="Total" name="width" value="10%"/>
<Property columnName="TimedOutTotal" name="width" value="10%"/>
<Property columnName="LocationName" name="class" value="mailReportTransLocName"/>
<Property columnName="Good" name="class" value="mailReportGood"/>
<Property columnName="Warning" name="class" value="mailReportWarning"/>
<Property columnName="Poor" name="class" value="mailReportPoor"/>
<Property columnName="Failed" name="class" value="mailReportFailed"/>
<Property columnName="Total" name="class" value="mailReportTotal"/>
<Property columnName="TimedOutTotal" name="class" value="mailReportTimedOut"/>
<Property columnName="Good" pattern="@ %"/>
<Property columnName="Warning" pattern="@ %"/>
<Property columnName="Poor" pattern="@ %"/>
<Property columnName="Failed" pattern="@ %"/>
<Property columnName="TimedOutTotal" pattern="@ %"/>
<Property columnName="TimedOutTotal" name="filterOut" value="externalValues"/>
</Properties>
</Table_2>
</DataView_2><DataView_3 bbFlags="1" bbName="Service Availability over Time" bbTitle="可用性" category="dataviews.category.performance-update" checkIfToIgnoreExtremeValues="true" className="com.mercury.topaz.reportsExt.customreport.SubReportDefinition" dataViewKeyName="dataviews.key.name.overall.trans.avail" dimesionsGroup="1" media="media.table" profileType="1" subId="11" title="可用性" width="wide">
<BreakDownFilters>
<!-- Breakdown by Transaction -->
<BreakDown id="2"/>
</BreakDownFilters>
<InputData action="overrideAttributes" completion="yes">
<XAxis action="remove"/>
<Measurement action="overrideAttributes" complete_with="TransDescription" dimension_name="TopazTransaction" matchAttributes="dimension_name" matchBy="attribute"/>
<ProfileFilter ProfileId="202" action="replace" selected="yes"/>
</InputData>
<DimensionGroups>
<DimensionGroup>1</DimensionGroup>
</DimensionGroups>
<Table_3 firstCell="false" order="TopazTransaction Name,ServiceAvailability,TransDescription" resourceKey="dailymail.serv.avail" type="simpleTable">
<Properties>
<Property name="width" value="600"/>
<Property columnName="TopazTransaction Name" name="width" value="30%"/>
<Property columnName="ServiceAvailability" name="width" value="10%"/>
<Property columnName="TransDescription" name="width" value="60%"/>
<Property columnName="TopazTransaction Name" name="class" value="mailReportTransLocName"/>
<Property columnName="ServiceAvailability" name="class" value="mailReportAvgResponseTime"/>
<Property columnName="TransDescription" name="class" value="mailReportTotal"/>
<Property columnName="ServiceAvailability" pattern="@ %"/>
</Properties>
<LimitStrings>
<LimitString fixLengthTo="50" keyName="TransDescription" type="Column"/>
<LimitString fixLengthTo="40" keyName="TopazTransaction Name" type="Column"/>
</LimitStrings>
</Table_3>
</DataView_3><NavBar>
<Component name="StepDiv"/>
<Component hideNavBar="false" left="0" name="TimeFrameDiv" top="0">
<ComboObject left="" name="TimeFrameCombo" top="">
<ComboItem key="NavBar.TimeFrame.Hour" value="Hour"/>
<ComboItem key="NavBar.TimeFrame.Day" value="Day"/>
<ComboItem key="NavBar.TimeFrame.Week" value="Week"/>
<ComboItem key="NavBar.TimeFrame.Month" value="Month"/>
<ComboItem key="NavBar.TimeFrame.Quarter" value="Quarter"/>
<ComboItem key="NavBar.TimeFrame.Year" value="Year"/>
<ComboItem key="NavBar.TimeFrame.LastHour" value="LastHour"/>
<ComboItem key="NavBar.TimeFrame.LastDay" value="LastDay"/>
<ComboItem key="NavBar.TimeFrame.LastWeek" value="LastWeek"/>
<ComboItem key="NavBar.TimeFrame.LastMonth" value="LastMonth"/>
<ComboItem key="NavBar.TimeFrame.LastQuarter" value="LastQuarter"/>
<ComboItem key="NavBar.TimeFrame.LastYear" value="LastYear"/>
</ComboObject>
</Component>
</NavBar><Footer></Footer><Header></Header><SeperatePages><![CDATA[true]]></SeperatePages></Report>接着执行查询:select report_id,extract(profile,'/Report/DataView[1]/InputData/ProfileFilter/@ProfileId')
from topics where report_id=65;执行查询时,出现以下错误:
OCI-21500: 内部错误代码, 参数: [58], [], [], [], [], [], [], []
OCI-21500: 内部错误代码, 参数: [kghfrh:ds], [0x6412808], [], [], [], [], [], []
而执行下面这个查询,则extract函数返回空值:
select report_id,extractValue(profile,'/Report/DataView[1]/InputData/ProfileFilter/@ProfileId')
from topics where report_id=65;最后,我把里面profile字段值的内容删减去DataView_i部分的内容后,再执行上面的extractValue才返回正确的答案。请问这是怎么回事呢?
我使用的sql:
create table topics(report_id NUMBER,profile XMLTYPE);insert into topics(report_id,profile) select report_id,XMLTYPE(profile) from config_data where report_id=65;
commit;执行该插入后,将插入CLOB字段值:‘<Report DisplayType="std" NocTimeFrame="" RefreshInterval="0" forwardTo="/MyTopaz/1/Report_65.jsp" id="Report_65" name="监控报告" reportTitle="系统监控报告" type="forward"><DataView_1 bbFlags="1" bbName="Daily Mail Multi Data Block" bbTitle="性能概要" category="dataviews.category.performance-update" checkIfToIgnoreExtremeValues="true" className="com.mercury.topaz.reportsExt.customreport.SubReportDefinition" dataViewKeyName="dataviews.key.name.alert.total.count" dimesionsGroup="1" media="media.table" profileType="1" subId="13" title="性能概要" width="wide">
<!--<MultiDataView bbName="Daily Mail Multi Data Block" bbFlags="1">-->
<!-- 1.Alerts 2.Availability,Total trans,Failed,Timed Out-->
<!-- Alerts total count-->
<DataView bbFlags="1" bbName="Alerts By Severity" profileType="1">
<BreakDownFilters>
<!-- Breakdown by Transaction -->
<BreakDown id="2"/>
</BreakDownFilters>
<InputData>
<XAxis action="remove"/>
<Measurement action="remove"/>
<ProfileFilter ProfileId="202" action="replace" selected="yes"/>
</InputData>
<DimensionGroups>
<DimensionGroup>1</DimensionGroup>
</DimensionGroups>
</DataView>
<!-- Alerts critical severity-->
<DataView bbFlags="1" bbName="Alerts By Severity" profileType="1">
<InputData>
<XAxis action="remove"/>
<Measurement action="replace" dimension_name="AlertSeverity" selected="yes"/>
<!-- only with critical severity -->
<DiscreteFilter action="add" dimension_name="AlertSeverity" selected="yes">
<DiscreteData>50</DiscreteData>
</DiscreteFilter>
<ProfileFilter ProfileId="202" action="replace" selected="yes"/>
CONTINUOUS_FILTERS_TO_1
</InputData>
<DimensionGroups>
<DimensionGroup>1</DimensionGroup>
</DimensionGroups>
</DataView>
<!-- server availability with timed out,failed and total-->
<DataView bbFlags="1" bbName="Daily Mail Server Avalability" checkIfToIgnoreExtremeValues="true">
<InputData>
<XAxis action="remove"/>
<Measurement action="remove"/>
<ProfileFilter ProfileId="202" action="replace" selected="yes"/>
CONTINUOUS_FILTERS_TO_1
</InputData>
<DimensionGroups>
<DimensionGroup>1</DimensionGroup>
</DimensionGroups>
</DataView>
<!-- order: Alert Total,Alert Total Critical,Total Transactions-->
<Table_1 firstCell="false" order="ServiceAvailability,Total,Total2,Failed,TimedOutTotal" resourceKey="s_daily_mail" type="mailSummary">
<Properties>
<Property name="width" value="600"/>
<Property columnName="ServiceAvailability" name="class" value="mailReportTotal"/>
<Property columnName="Total" name="class" value="mailReportTotal"/>
<Property columnName="Total2" name="class" value="mailReportTotalBold"/>
<Property columnName="Failed" name="class" value="mailReportTotal"/>
<Property columnName="TimedOutTotal" name="class" value="mailReportTotal"/>
<Property columnName="TimedOutTotal" name="filterOut" value="externalValues"/>
<Property allCells="yes" name="align" value="left"/>
</Properties>
<Integers intKeyValues="Total,Total2,Failed,TimedOutTotal"/>
</Table_1>
</DataView_1><DataView_2 bbFlags="1" bbName="Overall Performance of Locations in Mail report" bbTitle="位置的性能" category="dataviews.category.performance-update" checkIfToIgnoreExtremeValues="true" className="com.mercury.topaz.reportsExt.customreport.SubReportDefinition" dataViewKeyName="dataviews.key.name.perform.location" dimesionsGroup="1" media="media.table" profileType="1" subId="15" title="位置的性能" width="wide">
<BreakDownFilters>
<!-- Breakdown by Location -->
<BreakDown id="3"/>
</BreakDownFilters>
<InputData>
<XAxis action="remove"/>
<Measurement action="replace" dimension_name="LocationName" selected="yes"/>
<ProfileFilter ProfileId="202" action="replace" selected="yes"/>
</InputData>
<DimensionGroups>
<DimensionGroup>1</DimensionGroup>
</DimensionGroups>
<Table_2 firstCell="false" order="LocationName,Good,Warning,Poor,Failed,Total,TimedOutTotal" resourceKey="dailyMail" type="IgnoreExtremeValuesTable">
<Properties>
<Property name="width" value="600"/>
<Property columnName="LocationName" name="width" value="40%"/>
<Property columnName="Good" name="width" value="10%"/>
<Property columnName="Warning" name="width" value="10%"/>
<Property columnName="Poor" name="width" value="10%"/>
<Property columnName="Failed" name="width" value="10%"/>
<Property columnName="Total" name="width" value="10%"/>
<Property columnName="TimedOutTotal" name="width" value="10%"/>
<Property columnName="LocationName" name="class" value="mailReportTransLocName"/>
<Property columnName="Good" name="class" value="mailReportGood"/>
<Property columnName="Warning" name="class" value="mailReportWarning"/>
<Property columnName="Poor" name="class" value="mailReportPoor"/>
<Property columnName="Failed" name="class" value="mailReportFailed"/>
<Property columnName="Total" name="class" value="mailReportTotal"/>
<Property columnName="TimedOutTotal" name="class" value="mailReportTimedOut"/>
<Property columnName="Good" pattern="@ %"/>
<Property columnName="Warning" pattern="@ %"/>
<Property columnName="Poor" pattern="@ %"/>
<Property columnName="Failed" pattern="@ %"/>
<Property columnName="TimedOutTotal" pattern="@ %"/>
<Property columnName="TimedOutTotal" name="filterOut" value="externalValues"/>
</Properties>
</Table_2>
</DataView_2><DataView_3 bbFlags="1" bbName="Service Availability over Time" bbTitle="可用性" category="dataviews.category.performance-update" checkIfToIgnoreExtremeValues="true" className="com.mercury.topaz.reportsExt.customreport.SubReportDefinition" dataViewKeyName="dataviews.key.name.overall.trans.avail" dimesionsGroup="1" media="media.table" profileType="1" subId="11" title="可用性" width="wide">
<BreakDownFilters>
<!-- Breakdown by Transaction -->
<BreakDown id="2"/>
</BreakDownFilters>
<InputData action="overrideAttributes" completion="yes">
<XAxis action="remove"/>
<Measurement action="overrideAttributes" complete_with="TransDescription" dimension_name="TopazTransaction" matchAttributes="dimension_name" matchBy="attribute"/>
<ProfileFilter ProfileId="202" action="replace" selected="yes"/>
</InputData>
<DimensionGroups>
<DimensionGroup>1</DimensionGroup>
</DimensionGroups>
<Table_3 firstCell="false" order="TopazTransaction Name,ServiceAvailability,TransDescription" resourceKey="dailymail.serv.avail" type="simpleTable">
<Properties>
<Property name="width" value="600"/>
<Property columnName="TopazTransaction Name" name="width" value="30%"/>
<Property columnName="ServiceAvailability" name="width" value="10%"/>
<Property columnName="TransDescription" name="width" value="60%"/>
<Property columnName="TopazTransaction Name" name="class" value="mailReportTransLocName"/>
<Property columnName="ServiceAvailability" name="class" value="mailReportAvgResponseTime"/>
<Property columnName="TransDescription" name="class" value="mailReportTotal"/>
<Property columnName="ServiceAvailability" pattern="@ %"/>
</Properties>
<LimitStrings>
<LimitString fixLengthTo="50" keyName="TransDescription" type="Column"/>
<LimitString fixLengthTo="40" keyName="TopazTransaction Name" type="Column"/>
</LimitStrings>
</Table_3>
</DataView_3><NavBar>
<Component name="StepDiv"/>
<Component hideNavBar="false" left="0" name="TimeFrameDiv" top="0">
<ComboObject left="" name="TimeFrameCombo" top="">
<ComboItem key="NavBar.TimeFrame.Hour" value="Hour"/>
<ComboItem key="NavBar.TimeFrame.Day" value="Day"/>
<ComboItem key="NavBar.TimeFrame.Week" value="Week"/>
<ComboItem key="NavBar.TimeFrame.Month" value="Month"/>
<ComboItem key="NavBar.TimeFrame.Quarter" value="Quarter"/>
<ComboItem key="NavBar.TimeFrame.Year" value="Year"/>
<ComboItem key="NavBar.TimeFrame.LastHour" value="LastHour"/>
<ComboItem key="NavBar.TimeFrame.LastDay" value="LastDay"/>
<ComboItem key="NavBar.TimeFrame.LastWeek" value="LastWeek"/>
<ComboItem key="NavBar.TimeFrame.LastMonth" value="LastMonth"/>
<ComboItem key="NavBar.TimeFrame.LastQuarter" value="LastQuarter"/>
<ComboItem key="NavBar.TimeFrame.LastYear" value="LastYear"/>
</ComboObject>
</Component>
</NavBar><Footer></Footer><Header></Header><SeperatePages><![CDATA[true]]></SeperatePages></Report>接着执行查询:select report_id,extract(profile,'/Report/DataView[1]/InputData/ProfileFilter/@ProfileId')
from topics where report_id=65;执行查询时,出现以下错误:
OCI-21500: 内部错误代码, 参数: [58], [], [], [], [], [], [], []
OCI-21500: 内部错误代码, 参数: [kghfrh:ds], [0x6412808], [], [], [], [], [], []
而执行下面这个查询,则extract函数返回空值:
select report_id,extractValue(profile,'/Report/DataView[1]/InputData/ProfileFilter/@ProfileId')
from topics where report_id=65;最后,我把里面profile字段值的内容删减去DataView_i部分的内容后,再执行上面的extractValue才返回正确的答案。请问这是怎么回事呢?
from topics where report_id=65;
不过还是有点奇怪,怎么我的路径出错,plsql没报路径错误呢?而在我漏掉@时就提示了一次