おはよう。Xml in oracle 11g
"xmltype"型の変数にxmlがあります。問題の XMLはこれです:
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header />
<soap-env:Body>
<n0:EmployeeDataByIdentificationResponse_sync xmlns:n0="http://sap.com/xi/SAPGlobal20/Global" xmlns:prx="urn:sap.com:proxy:GH6:/1SAI/TASBA84FA60747163FD5188:804">
<EmployeeData>
<ChangeStateID> 20160923221906.7365850</ChangeStateID>
<UUID>00163e06-cc41-1ee3-bb8f-eebd7b8a466e</UUID>
<EmployeeID>300056</EmployeeID>
<EmploymentData>
<UUID>00163e06-cc41-1ed3-bb9a-250ba8cddcd3</UUID>
<ChangeStateID> 20140605164803.5438320</ChangeStateID>
<EmploymentCountryCode>MX</EmploymentCountryCode>
<WorkAgreementData>
<UUID>00163e06-cc41-1ed3-bb9a-250ba8ce5cd3</UUID>
<ChangeStateID> 20160730162955.5720390</ChangeStateID>
<WorkAgreementID>300056/001</WorkAgreementID>
<ValidityPeriod>
<StartDate>1998-05-18</StartDate>
<EndDate>9999-12-31</EndDate>
</ValidityPeriod>
<AdditionalClauses>
<ValidityPeriod>
<StartDate>1998-05-18</StartDate>
<EndDate>9999-12-31</EndDate>
</ValidityPeriod>
<AgreedWorkingTimeRate>
<DecimalValue>8.0</DecimalValue>
<BaseMeasureUnitCode>DAY</BaseMeasureUnitCode>
</AgreedWorkingTimeRate>
<WorkAgreementTypeCode>1</WorkAgreementTypeCode>
<WorkAgreementAdministrativeCategoryCode listID="MX">2</WorkAgreementAdministrativeCategoryCode>
</AdditionalClauses>
<OrganisationalAssignment>
<ValidityPeriod>
<StartDate>2013-01-01</StartDate>
<EndDate>9999-12-31</EndDate>
</ValidityPeriod>
<PositionAssignment>
<ValidityPeriod>
<StartDate>2013-01-01</StartDate>
<EndDate>9999-12-31</EndDate>
</ValidityPeriod>
<PositionUUID>00163e06-cc41-1ed3-bb9a-24e569a75cd3</PositionUUID>
<PositionID>POS30005620140605164</PositionID>
<AssignmentPercent>100.0</AssignmentPercent>
<OrganisationalCenterDetails>
<ValidityPeriod>
<StartDate>2013-01-01</StartDate>
<EndDate>9999-12-31</EndDate>
</ValidityPeriod>
<OrganisationalCenterUUID>00163e06-cc41-1ed3-bb82-fea27ecddec6</OrganisationalCenterUUID>
<OrganisationalCenterID>LFSA11514</OrganisationalCenterID>
</OrganisationalCenterDetails>
<JobAssignmentDetails>
<ValidityPeriod>
<StartDate>2013-01-01</StartDate>
<EndDate>9999-12-31</EndDate>
</ValidityPeriod>
<JobUUID>00163e06-cc41-1ee3-bb88-68132a6b7aa2</JobUUID>
<JobID>PR006</JobID>
</JobAssignmentDetails>
</PositionAssignment>
<ReportingLineUnit>
<Id>LFSA11000</Id>
<Name>Laboratorios Finlay San Pedro Sula</Name>
<ValidityPeriod>
<StartDate>2013-01-01</StartDate>
<EndDate>2013-12-31</EndDate>
</ValidityPeriod>
</ReportingLineUnit>
<ReportingLineUnit>
<Id>LFSA11510</Id>
<Name>Produccion</Name>
<ValidityPeriod>
<StartDate>2014-01-01</StartDate>
<EndDate>2014-12-14</EndDate>
</ValidityPeriod>
</ReportingLineUnit>
<ReportingLineUnit>
<Id>LFSA11510</Id>
<Name>Produccion</Name>
<ValidityPeriod>
<StartDate>2014-12-15</StartDate>
<EndDate>9999-12-31</EndDate>
</ValidityPeriod>
</ReportingLineUnit>
<CostCenter>
<Id>LFSA11514</Id>
<Name>Liquidos Jarabes</Name>
<ValidityPeriod>
<StartDate>2013-01-01</StartDate>
<EndDate>2013-12-31</EndDate>
</ValidityPeriod>
</CostCenter>
<CostCenter>
<Id>LFSA11514</Id>
<Name>Liquidos Jarabes</Name>
<ValidityPeriod>
<StartDate>2014-01-01</StartDate>
<EndDate>2014-12-14</EndDate>
</ValidityPeriod>
</CostCenter>
<CostCenter>
<Id>LFSA11514</Id>
<Name>Liquidos Jarabes</Name>
<ValidityPeriod>
<StartDate>2014-12-15</StartDate>
<EndDate>9999-12-31</EndDate>
</ValidityPeriod>
</CostCenter>
</OrganisationalAssignment>
</WorkAgreementData>
</EmploymentData>
<BiographicalData>
<ValidityPeriod>
<StartDate>0001-01-01</StartDate>
<EndDate>9999-12-31</EndDate>
</ValidityPeriod>
<FormOfAddressCode>0001</FormOfAddressCode>
<AcademicTitleCode>Z011</AcademicTitleCode>
<GivenName>Maria</GivenName>
<FamilyName>Reyes</FamilyName>
<AdditionalFamilyName>Membreno</AdditionalFamilyName>
<MiddleName>Elena</MiddleName>
<GenderCode>2</GenderCode>
<BirthName>ronal</BirthName>
<BirthDate>1967-11-20</BirthDate>
<MaritalStatusCode>1</MaritalStatusCode>
<NationalityCountryCode>HN</NationalityCountryCode>
</BiographicalData>
<AddressInformation>
<UUID>00163e06-cc41-1ee3-bb8f-eebd7b8aa66e</UUID>
<ValidityPeriod>
<StartDate>0001-01-01</StartDate>
<EndDate>9999-12-31</EndDate>
</ValidityPeriod>
<Address>
<PostalAddress>
<CountryCode>HN</CountryCode>
<StreetPostalCode>21101</StreetPostalCode>
<StreetName>Baracoa</StreetName>
<TimeZoneCode>UTC-6</TimeZoneCode>
</PostalAddress>
<Telephone>
<TelephoneFormattedNumberDescription>55555</TelephoneFormattedNumberDescription>
<NormalisedNumberDescription>55555</NormalisedNumberDescription>
<MobilePhoneNumberIndicator>true</MobilePhoneNumberIndicator>
<SMSEnabledIndicator>true</SMSEnabledIndicator>
</Telephone>
</Address>
</AddressInformation>
<WorkplaceAddressInformation>
<UUID>00163e06-cc41-1ee3-bb8f-eebd7b8ce66e</UUID>
<WorkplaceAddressOrganisation>
<TypeCode>1</TypeCode>
<PostalAddress>
<CountryCode>HN</CountryCode>
<StreetPostalCode>21101</StreetPostalCode>
<StreetName>Baracoa</StreetName>
<TimeZoneCode>UTC-6</TimeZoneCode>
</PostalAddress>
</WorkplaceAddressOrganisation>
</WorkplaceAddressInformation>
</EmployeeData>
<ProcessingConditions>
<ReturnedQueryHitsNumberValue>1</ReturnedQueryHitsNumberValue>
<MoreHitsAvailableIndicator>false</MoreHitsAvailableIndicator>
<LastReturnedObjectID>00163E06CC411EE3BB8FEEBD7B8A466E</LastReturnedObjectID>
</ProcessingConditions>
</n0:EmployeeDataByIdentificationResponse_sync>
</soap-env:Body>
と「終了日」フィールド「ValidityPeriod」の日付が現在よりも大きいとき、私は「ID」ノード「コストセンター」フィールドを取得したいです日付。
私は次のクエリを持っていますが、私のために働いていません。
FOR r IN (
SELECT ExtractValue(Value(p),'/OrganisationalAssignment/CostCenter/Id/text()') as CODIGO_CECO,
ExtractValue(Value(p),'/OrganisationalAssignment/CostCenter/Name/text()') as DESCRIPCION_CECO
FROM TABLE(XMLSequence(Extract(xrespond,'/WorkAgreementData/OrganisationalAssignment'))) p
WHERE TO_DATE(ExtractValue(Value(p),'/OrganisationalAssignment/ValidityPeriod/EndDate/text()'),'RRRR-MM-DD') >= TRUNC(SYSDATE)
) LOOP
CECOID := r.CODIGO_CECO;
CECODESCRIPCION := r.DESCRIPCION_CECO;
END LOOP;
ノードが返す行が多すぎるというエラーが発生します。
日付「validityPeriod」が現在の日付より大きい場合、IDフィールド「コストセンター」を取得するにはどうすればよいですか。
よろしく
こんにちは@Alexプール。助けてくれてありがとう –