Extractvalue problem
hi
The result of
extractValue(value(x),'//owl:Ontology//rdfs:label') is empty. I tried different way but without any success.
Any idea what can be the problem?
Thanks
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#">
<owl:Ontology>
<rdfs:comment>An example OWL ontology</rdfs:comment>
<rdfs:comment>Derived from the DAML Wine ontology at
http://ontolingua.stanford.edu/doc/chimaera/ontologies/wines.daml
Substantially changed, in particular the Region based relations.
</rdfs:comment>
<rdfs:label>Wine Ontology</rdfs:label>
</owl:Ontology>
</rdf:RDF>
If your document contains Namespaces, you must supply the namespace definitions as the last argument to extractValue, or the any of the other xpath based functions. You must also use the correct namespace prefixes in the xpath expression itself
Eg
extractValue(value(x),'//owl:Ontology//rdfs:label',
'xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"')
Similar Messages
-
ExtractValue Problem----- ORA-03113: end-of-file on communication channel
Dear Friend
My system is now on this version
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
PL/SQL Release 9.2.0.4.0 - Production
CORE 9.2.0.3.0 Production
TNS for Linux: Version 9.2.0.4.0 - Production
NLSRTL Version 9.2.0.4.0 - Production
earlier it was
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE 9.2.0.1.0 Production
TNS for Linux: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production
I took the cold backup and restore in this version. after that my total system is working very fine, is very fast using than the previous. But only one SQL command is not working which is very urgent to solve
when i am using this
SELECT extractValue(value(t),'/produit/cod_pro') cod_pro
FROM XMLTABLE X,
TABLE ( xmlsequence (extract(XML_data,'/com/lProducts_list/produit'))) t;
the table structure is
SQL> desc XMLTABLE
Name Null? Type
DOC_ID NUMBER
FILE_NAME VARCHAR2(100)
FILE_DATE DATE
XML_DATA XMLTYPE
I got this error
ORA-03113: end-of-file on communication channel
Please guide me what to do to resolve this problem
FarhadThe error, ORA-03113: end-of-file on communication channel, is a client driver error.
The client driver simply says "hey, the database server process servicing me has torn down our communication channel!". The communication channel is usually a TCP socket connection.
The client driver has no idea why. Thus you have to find the answer on the server.
The usual cause of this communication channel being closed, is the Oracle server process servicing the client session, crashing.
When an Oracle server process crashes, it does not tell the client. It usually writes an entry to the Oracle alert log, dump a trace file, and terminates. When terminating, it tears down any communication channels (TCP sockets) it may have opened.
Therefore you must look in
- the alert log file for an error message listing the crash (which will include the dump file name)
- look at this trace dump file (which is difficult if you're not familiar with Oracle internals)
- investigate the stack trace and error codes on Metalink (which often turns up the bug notes for this, plus any workarounds or available patches)
Usually however, one should log these types of Oracle server errors as a TAR with Oracle Support. -
XML extractvalue and NULL result-Problem
I've got a very strange problem: One select gets restults in my development-database, the same select in production retrieves NULL.
The following sql-construct:
SELECT (
CASE
WHEN personkey!=-1
THEN
( SELECT extractvalue( v.xml, '/p:PersonData/p:TypedPostalAddress[@id="' ||<string> || '"]/p:PostalAddress/p:PostalCode', .....')
FROM <tbl1>,<tbl2>
WHERE tbl1.id=tbl2.id)
ELSE
( SELECT 'no person' FROM dual )
END ) adress,
FROM <tbl3>
WHERE <tbl3>.personkey!=-1
When I use a view containing an outer join in the ELSE-Condition of the case I'm not getting a result in production, but I do in development (same data, same oracle-version, but other instance), but when I use a view without an outer join in the else-Condition, I'm getting results also in production. The column "personkey" is not nullable.
Does anyone got an idea what could be wrong with this SQL?
Thanks in advance for help!Additional Information:
When resolving the CASE to a "union all" query, I am having the following result:
query1 is working
query2 is working
joining both queries with union all => the result of the first query (with the extractvalue) is NULL, the second query is still working. -
Problem in UPDATE with EXTRACTVALUE : ORA-00600
Hi all,
I have some trouble with this update query :
UPDATE enveloppe_message
SET ems_date_modification = SYSDATE,
ems_login_modification = 'pipo',
ems_dn_emet = EXTRACTVALUE (ems_xml, '/DataPDU/Header/Message/Sender/DN', 'xmlns="urn:swift:saa:xsd:saa.2.0"'),
ems_dn_dest = EXTRACTVALUE (ems_xml, '/DataPDU/Header/Message/Receiver/DN', 'xmlns="urn:swift:saa:xsd:saa.2.0"'),
ems_reference_tech = EXTRACTVALUE (ems_xml, '/DataPDU/Header/Message/SenderReference', 'xmlns="urn:swift:saa:xsd:saa.2.0"')
WHERE ems_id = 1130;I get this error message :
ORA-00600: code d'erreur interne, arguments : [koklismem111: BFILE locator], [], [], [], [], [], [], [], [], [], [], []But if I do this :
SELECT EXTRACTVALUE (ems_xml, '/DataPDU/Header/Message/Sender/DN', 'xmlns="urn:swift:saa:xsd:saa.2.0"') AS a,
EXTRACTVALUE (ems_xml, '/DataPDU/Header/Message/Receiver/DN', 'xmlns="urn:swift:saa:xsd:saa.2.0"') AS b,
EXTRACTVALUE (ems_xml, '/DataPDU/Header/Message/SenderReference', 'xmlns="urn:swift:saa:xsd:saa.2.0"') AS c
FROM enveloppe_message
WHERE ems_id = 1130;It's ok and I get these datas :
a : ou=abc,ou=ghf,o=bvhdjdie,o=lkljg
b : ou=dfg,ou=fkd,o=nbjfkkdk,o=bnfjd
c : jkldfjsdlflsnvkllkfkfllcklqsjkckldand thus, this query become ok ????
UPDATE enveloppe_message
SET ems_date_modification = SYSDATE,
ems_login_modification = 'pipo',
ems_dn_emet = 'ou=abc,ou=ghf,o=bvhdjdie,o=lkljg',
ems_dn_dest = 'ou=dfg,ou=fkd,o=nbjfkkdk,o=bnfjd',
ems_reference_tech = 'jkldfjsdlflsnvkllkfkfllcklqsjkckld'
WHERE ems_id = 1130;Does anyone have some idea ????
Thanks.Thanks a lot Marco for the link on the FAQ.
But I don't understand how to use a non default namespace... sorry!
Finally, this query is okay :
SELECT xmlcast(xmlquery('declare default element namespace "urn:swift:saa:xsd:saa.2.0"; $p/DataPDU/Header/Message/Sender/DN' passing ems_xml as "p" returning content) as varchar2(4000)) AS a,
xmlcast(xmlquery('declare default element namespace "urn:swift:saa:xsd:saa.2.0"; $p/DataPDU/Header/Message/Receiver/DN' passing ems_xml as "p" returning content) as varchar2(4000)) AS b,
xmlcast(xmlquery('declare default element namespace "urn:swift:saa:xsd:saa.2.0"; $p/DataPDU/Header/Message/SenderReference' passing ems_xml as "p" returning content) as varchar2(4000)) AS c
FROM enveloppe_message
WHERE ems_id = 1130;But this one, not !
UPDATE enveloppe_message
SET ems_date_modification = SYSDATE,
ems_login_modification = 'pipo',
ems_dn_emet = xmlcast(xmlquery('declare default element namespace "urn:swift:saa:xsd:saa.2.0"; $p/DataPDU/Header/Message/Sender/DN' passing ems_xml as "p" returning content) as varchar2(4000)),
ems_dn_dest = xmlcast(xmlquery('declare default element namespace "urn:swift:saa:xsd:saa.2.0"; $p/DataPDU/Header/Message/Receiver/DN' passing ems_xml as "p" returning content) as varchar2(4000)),
ems_reference_tech = xmlcast(xmlquery('declare default element namespace "urn:swift:saa:xsd:saa.2.0"; $p/DataPDU/Header/Message/SenderReference' passing ems_xml as "p" returning content) as varchar2(4000))
WHERE ems_id = 1130;I get the same error :
ORA-00600: code d'erreur interne, arguments : [koklismem2: insufficient locator len], [0], [86], [], [], [], [], [], [], [], [], []Maybe these optimizations don't solve my initial problem !? -
ExtractValue-namespace problem?
hi
extract(value(x),'//owl:Ontology') extracts the node, but the result of
extractValue(value(x),'//owl:Ontology//rdfs:label') is empty. I tried different way but without any success.
Any idea what can be the problem?
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#">
<owl:Ontology>
<rdfs:comment>An example OWL ontology</rdfs:comment>
<rdfs:comment>Derived from the DAML Wine ontology at
http://ontolingua.stanford.edu/doc/chimaera/ontologies/wines.daml
Substantially changed, in particular the Region based relations.
</rdfs:comment>
<rdfs:label>Wine Ontology</rdfs:label>
</owl:Ontology>
</rdf:RDF>Problem solved.
Thanks,
See: Re: extractvalue and Xpath -
Xmltype extract/extractValue query problem
I am tring to use xmltype extract/extractValue.
The query result never shown up, instead, it only
display 'Answer goes here' or "10 rows selected".
Same select statement used in java program got a null
return.
Anybody knows why?
Honglin
SQL> select extractValue(xml_data, '/FAQ-LIST/QUESTION/RESPONSE/text()')
2 from XMLTable
3 where existsNode(xml_data, '/FAQ-LIST/QUESTION[QUERY="Question 1"]') = 1;
EXTRACTVALUE(XML_DATA,'/FAQ-LIST/QUESTION/RESPONSE/TEXT()')
Answer goes here.Can you provide the sample XML file?
-
I am receiving data from the application and storing it in the table:
create table xmldata(
xmldata_id number,
data XMLType);
I inserted the following XML documents in the table manualy:
<EventList start="0" end="2" confID="0" xmlns:xsi="http://www.w3.org/2001/XMLSch
ema-instance">
<Events feature="rdex=conf" lockState="true" xsi:type="LockEvent"/>
</EventList>
I am able to do this:
SELECT existsNode(data,
'/EventList/Events[@xsi:type="LockEvent"]')
FROM XMLdata
where xmldata_id = 41;
and this:
SELECT extractValue(data,'/EventList/Events/@feature')
FROM XMLdata;
but I am not able to do that:
SELECT extractValue(data,'/EventList/Events/@xsi:type')
FROM XMLdata;
Was wandering if anyone could give me an idea what am I doing wrong?
P.S. I am new to XML
Thanks,
LeonidYou need to pass the namespace declartion for xsi as the third argument....
Eg
SELECT extractValue(data,'/EventList/Events/@xsi:type',
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"')
FROM XMLdata; -
hey folks,
i would like to store a certificate's private key in a mysql db.
my problem is that i don't know how to convert it back to a PrivateKey when i extract it from the db.
i use the function Base64.encode(userPrivKey.getEncoded()); (org.bouncycastle.util.encoders.Base64; to store the private key base64 encoded in the db.
when i extract the key from the db i can decode it with Base64.decode(). the problem is that the decode function only returns a byte array.
so does anybody know how i can convert that byte array back to a private key?
or is there any other (better) solution to store and retrieve private keys from a mysql db?
many thanks
totoI've been looking to do the same thing, and your code is helpful.
If you do not want to pull in the BouncyCastle library, you can extract the RSA private key from the PKCS8 key format by parsing the DER directly. Here is some code that does it. All you need to add is the Base64 encode, and RSA begin and end flags.
import java.util.*;
import java.io.*;
public class Pkcs8ToRsa {
// rsaEncrytion is { pkcs-1 1 }
// pkcs-1 is { iso(1) member-body(2) usa(840) rsadsi(113549) pkcs(1) 1 }
private static final byte[] OID_rsaEncryption = {
(byte)0x2a, (byte)0x86, (byte)0x48, (byte)0x86,
(byte)0xf7, (byte)0x0d, (byte)0x01, (byte)0x01,
(byte)0x01 };
private static final byte[] INTEGER_v1 = { (byte)0x00 };
private static final int TAG_INTEGER = 0x02;
private static final int TAG_OCTET_STRING = 0x04;
private static final int TAG_OID = 0x06;
private static final int TAG_SEQUENCE = 0x30;
private byte[] buffer;
private int offset;
protected Pkcs8ToRsa(byte[] pkcs8key) {
this.buffer = pkcs8key;
this.offset = 0;
public static byte[] convert(byte[] pkcs8key) {
return (new Pkcs8ToRsa(pkcs8key)).extractPrivateKey();
private int extractTag() {
// Assume single octet tag
return ((int)buffer[offset++]) & 0xff;
private void matchTag(int tag) {
if (extractTag() != tag) {
throw new IllegalArgumentException("Bad input");
private int extractLength() {
int lengthOfLength = ((int)buffer[offset++]) & 0xff;
if ((lengthOfLength & 0x80) == 0) {
// Single octet
return lengthOfLength;
} else {
// Multiple-octet
lengthOfLength = lengthOfLength & 0x7f;
int length = 0;
for (int i = 0; i < lengthOfLength; i++) {
length = (length << 8) | (((int)buffer[offset++]) & 0xff);
return length;
private void matchLength(int length) {
if (extractLength() != length) {
throw new IllegalArgumentException("Bad input");
private byte[] extractValue(int length) {
byte[] value = new byte[length];
System.arraycopy(buffer, offset, value, 0, length);
offset += length;
return value;
private void matchValue(byte[] value) {
for (int i = 0; i < value.length; i++) {
if (buffer[offset+i] != value) {
throw new IllegalArgumentException("Bad input");
offset += value.length;
public byte[] extractPrivateKey() {
// Encoding should be
// SEQUENCE {
// version INTEGER,
// privateKeyAlgorithm SEQUENCE {
// id OBJECT IDENTIFIER,
// Type OPTIONAL
// privateKey OCTET STRING
// attributes [0] Attributes OPTIONAL
// We are after the contents of privateKey
// Outer sequence
matchTag(TAG_SEQUENCE);
int totalLength = extractLength();
if ((offset + totalLength) > buffer.length) {
throw new IllegalArgumentException("Bad input");
// Check version == v1
matchTag(TAG_INTEGER);
matchLength(INTEGER_v1.length);
matchValue(INTEGER_v1);
// Check algorithm
matchTag(TAG_SEQUENCE);
int algorithmLength = extractLength();
int keyOffset = offset + algorithmLength;
matchTag(TAG_OID);
matchLength(OID_rsaEncryption.length);
matchValue(OID_rsaEncryption);
// Skip to privateKey
offset = keyOffset;
// Get it.
matchTag(TAG_OCTET_STRING);
int keyLength = extractLength();
if ((offset + keyLength) > buffer.length) {
throw new IllegalArgumentException("Bad input");
return extractValue(keyLength); -
Problem using views containing xpath expressions with Oracle Forms
Mark,
Nice to see you back on the forum answering questions.
This example is based on the standard purchaseorder schema.
i registered the schema, created a relational table and then created
a view using xpath.everything works well and i am able to select the data
using sql*plus. Now this views is like any other view, when i describe the
view, i can see the all the data types are valid for the columns and also the lengths.
Now when i try to base a data block in oracle forms using this view, i get error
"ORA-24324 - service handle not initialized."
Whereas if i create another view on top of the first view and then base the data block on this view, it works for me. i described the second view from sql*plus and everything seems to be same for me.
this is the same behaviour from database 9i r2 and it exists in 10g r1 also.
Any hints as what might be the problem or you would like me to file a tar for this.
create or replace view purchaseorder_header_xml
as
select id
,extractvalue(xml_data, '/PurchaseOrder/Reference') reference
,extractvalue(xml_data, '/PurchaseOrder/Requestor') requestor
,extractvalue(xml_data, '/PurchaseOrder/User') po_user
,extractvalue(xml_data, '/PurchaseOrder/CostCenter') costcenter
,extractvalue(xml_data, '/PurchaseOrder/SpecialInstructions') spl_instructions
from tab_xmldata
create or replace view purchaseorder_header
as select * from purchaseorder_header_xml
/RaghuNot used Forms for years. However I suspect that Forms is trying to poke around behind the view and not understanding what it sees. I expect you'll need to open a Forms Tar to get to the bottom of this. It also appears that you a workaround which is to create a view on the view by the sound of it..
-
Problem in XPath query with namespace
Hi All,
Please help me on this topic.I given xml document which i have inserted into Oracle XML DB 10g R2 without registering xml schema.
I am listing out my problem here.
1. I need to get the value of cost element.If i have parent node duplicate
<?xml version="1.0" ?>
<customers xmlns="http://localhost/openuri.org" >
<customer xmlns="http://orcl.com">
<order>
<ordername>Computer</ordername>
<cost>35785638</cost>
</order>
<order>
<ordername>Computer</ordername>
<cost>35785638</cost>
</order>
</customer>
</customers>
2. The leaf node has namespace in it.How do i write query for second cost element.
<?xml version="1.0" ?>
<customers xmlns="http://localhost/openuri.org" >
<customer xmlns="http://orcl.com">
<order>
<ordername>Computer</ordername>
<cost>35785638</cost>
</order>
<order>
<ordername>Computer</ordername>
<cost xmlns="http://oracle.xdb.com">35785638</cost></order>
</customer>
</customers>
Thanks in Advance,
Jamesset long 100000
var xmltext clob
begin
:xmltext:=
'<?xml version="1.0" ?>
<customers xmlns="http://localhost/openuri.org" >
<customer xmlns="http://orcl.com">
<order>
<ordername>Computer</ordername>
<cost>35785638</cost>
</order>
<order>
<ordername>Computer</ordername>
<cost>35785638</cost>
</order>
</customer>
</customers>';
end;
select rownum as "NUM"
, extractvalue(value(v),'/*') as "VALUE"
from table(xmlsequence(extract(xmltype(:xmltext),'//customer/order/cost','xmlns="http://orcl.com"'))) v
SQL> r
1 select rownum as "NUM"
2 , extractvalue(value(v),'/*') as "VALUE"
3 from table(xmlsequence(extract(xmltype(:xmltext),'//customer/order/cost','xmlns="http://orcl.com"'))) v
4*
NUM VALUE
1 35785638
2 35785638
begin
:xmltext:=
'<?xml version="1.0" ?>
<customers xmlns="http://localhost/openuri.org" >
<customer xmlns="http://orcl.com">
<order>
<ordername>Computer</ordername>
<cost>35785638</cost>
</order>
<order>
<ordername>Computer</ordername>
<cost xmlns="http://oracle.xdb.com">35785638</cost></order>
</customer>
</customers>';
end;
select extractvalue(xmltype(:xmltext),'//cost','xmlns="http://oracle.xdb.com"')
from dual;
SQL> r
1 select extractvalue(xmltype(:xmltext),'//cost','xmlns="http://oracle.xdb.com"')
2* from dual
EXTRACTVALUE(XMLTYPE(:XMLTEXT),'//COST','XMLNS="HTTP://ORACLE.XDB.COM"')
35785638
select *
from table(xmlsequence(extract(xmltype(:xmltext),'//cost','xmlns="http://oracle.xdb.com"')))
SQL> r
1 select *
2 from table(xmlsequence(extract(xmltype(:xmltext),'//cost','xmlns="http://oracle.xdb.com"')))
3*
COLUMN_VALUE
<cost xmlns="http://oracle.xdb.com">35785638</cost>
select extractvalue(value(v),'/*') "VALUE"
from table(xmlsequence(extract(xmltype(:xmltext),'//cost','xmlns="http://oracle.xdb.com"'))) v
SQL> r
1 select extractvalue(value(v),'/*') "VALUE"
2 from table(xmlsequence(extract(xmltype(:xmltext),'//cost','xmlns="http://oracle.xdb.com"'))) v
3*
VALUE
35785638
select *
from table(xmlsequence(extract(xmltype(:xmltext),'//customer/order','xmlns="http://orcl.com"')))
SQL> r
1 select *
2 from table(xmlsequence(extract(xmltype(:xmltext),'//customer/order','xmlns="http://orcl.com"')))
3*
COLUMN_VALUE
<order xmlns="http://orcl.com">
<ordername>Computer</ordername>
<cost>35785638</cost>
</order>
<order xmlns="http://orcl.com">
<ordername>Computer</ordername>
<cost xmlns="http://oracle.xdb.com">35785638</cost>
</order> -
Problem with ORA-19025 when joining tables
I am querying a table that stores xml datata in an xml column. I an query this column without problems. If I join the table with another table (not xml). I get the error below.
ORA-19025: EXTRACTVALUE returns value of only one node
19025. 00000 - "EXTRACTVALUE returns value of only one node"
*Cause: Given XPath points to more than one node.
*Action: Rewrite the query so that exactly one node is returned.
I don't seem to have any subnodes in the fields I am querying and I dont know how joining to the second table introduces the problem.
This produces the error I mentioned before
SELECT a.NAME,
EXTRACTVALUE(xmltype(a.DOCUMENTATION), '/metadata//idinfo/citation/citeinfo/title') TITLE,
EXTRACTVALUE(xmltype(a.DOCUMENTATION), '/metadata//idinfo/citation/citeinfo/origin') ORIGIN,
EXTRACTVALUE(xmltype(a.DOCUMENTATION), '/metadata//idinfo/citation/citeinfo/pubdate') PUBLICATION_DATE,
GDB_ITEMTYPES.NAME
FROM GDB_ITEMS_vw a, GDB_ITEMTYPES b
where a.UUID = b.UUID
This one gives no error
SELECT a.NAME,
EXTRACTVALUE(xmltype(a.DOCUMENTATION), '/metadata//idinfo/citation/citeinfo/title') TITLE,
EXTRACTVALUE(xmltype(a.DOCUMENTATION), '/metadata//idinfo/citation/citeinfo/origin') ORIGIN,
EXTRACTVALUE(xmltype(a.DOCUMENTATION), '/metadata//idinfo/citation/citeinfo/pubdate') PUBLICATION_DATE,
FROM GDB_ITEMS_vw a
I am using 11g 2
Any suggestions are welcome
Thanks
Edited by: user3444035 on Mar 18, 2011 1:43 PMHi,
Could you give some sample data from GDB_ITEMS_vw and GDB_ITEMTYPES? -
A problem in WEBI with the hierachy After updated to BO 4.1 sp03
IN the BW , I have a hierachy Char. in my Qeury. I build a OLAP connection to BO, then created a webi with BEX.
In the old BO (version 4.0 SP 03) is OK. but when updated to new BO (version 4.1 SP 03). The hierachy in prompt can't be unfold. like this
but if i input "*" to search . there is no different.
in the 4.1 sp 03 if i deleted the hierachy in the prompt.when i get into the webi(with data),then, i added a filter with the hierachy. It's OK, too.
WHY???? and how can i resolve the problem.Hi Arie,
Yes I installed 4.1 on september 2nd and the installation guide was alreadly corrected.
I ran without any errors :
DECLARE
ACL_PATH VARCHAR2(4000);
ACL_ID RAW(16);
BEGIN
-- Look for the ACL currently assigned to '*' and give APEX_040100
-- the "connect" privilege if APEX_040100 does not have the privilege yet.
SELECT ACL INTO ACL_PATH FROM DBA_NETWORK_ACLS
WHERE HOST = '*' AND LOWER_PORT IS NULL AND UPPER_PORT IS NULL;
-- Before checking the privilege, ensure that the ACL is valid
-- (for example, does not contain stale references to dropped users).
-- If it does, the following exception will be raised:
-- ORA-44416: Invalid ACL: Unresolved principal 'APEX_040100'
-- ORA-06512: at "XDB.DBMS_XDBZ", line ...
SELECT SYS_OP_R2O(extractValue(P.RES, '/Resource/XMLRef')) INTO ACL_ID
FROM XDB.XDB$ACL A, PATH_VIEW P
WHERE extractValue(P.RES, '/Resource/XMLRef') = REF(A) AND
EQUALS_PATH(P.RES, ACL_PATH) = 1;
DBMS_XDBZ.ValidateACL(ACL_ID);
IF DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE(ACL_PATH, 'APEX_040100',
'connect') IS NULL THEN
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(ACL_PATH,
'APEX_040100', TRUE, 'connect');
END IF;
EXCEPTION
-- When no ACL has been assigned to '*'.
WHEN NO_DATA_FOUND THEN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL('power_users.xml',
'ACL that lets power users to connect to everywhere',
'APEX_040100', TRUE, 'connect');
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL('power_users.xml','*');
END;
COMMIT;
Thnks -
Problem using existsnode from view
I am having a problem using existsnode from a view. I am currently using 10.2.0.3
example
CREATE OR REPLACE VIEW XML_PERSON_ASSOCIATION
(PERSON)
AS
select
xmlelement("Person",
xmlforest(
extractvalue(value(p),'/Person/PersonID') "PersonID",
extractvalue(value(p),'/Person/Prefix') "Prefix",
extractvalue(value(p),'/Person/FirstName') "FirstName",
extractvalue(value(p),'/Person/MiddleName') "MiddleName",
extractvalue(value(p),'/Person/LastName') "LastName",
extractvalue(value(p),'/Person/Suffix') "Suffix",
extractvalue(value(p),'/Person/PreferredName') "PreferredName",
extractvalue(value(p),'/Person/Gender') "Gender",
extractvalue(value(p),'/Person/PrimaryLanguage') "PrimaryLanguage",
extractvalue(value(p),'/Person/RecordStatus') "RecordStatus",
extractvalue(value(p),'/Person/ImportedDate') "ImportedDate",
(select
xmlagg(
xmlelement("Association",
xmlforest(
extractvalue(value(oa),'/OrganizationPersonAssoc/Name') "Name",
extractvalue(value(ot),'/OrganizationType/OrganizationID') "OrganizationID",
extractvalue(value(ot),'/OrganizationType/Type') "OrganizationType",
extractvalue(value(a),'/Association/Role') "Role",
extractvalue(value(a),'/Association/RecordStatus') "RecordStatus",
extractvalue(value(oa),'/OrganizationPersonAssoc/ImportedDate') "ImportedDate"
xmlelement("PersonTypes",
extract(value(per),'/Person/PersonTypes/PersonType')
xmlelement("Addresses",
extract(value(a),'/Association/Addresses/Address')
xmlelement("ContactMechanisms",
extract(value(a),'/Association/ContactMechanisms/ContactMechanism')
from org_person_assoc oa,
table(xmlsequence(extract(value(oa),'/OrganizationPersonAssoc/OrganizationTypes/OrganizationType'))) ot,
table(xmlsequence(extract(value(ot),'/OrganizationType/Associations/Association'))) a,
table(xmlsequence(extract(value(a),'/Association/Persons/Person'))) per
where extractvalue(value(per),'/Person/PersonID') = extractvalue(value(p),'/Person/PersonID')
) "Associations"
) person
from person p
/When I run the following statment
select person
from xml_person_association o
where existsnode(person,'/Person/Associations/Association[OrganizationID=30097]')=1;
I get no records returned. Now if I used the extract function and use the same path that's in the existsnode clause I get a record returned.
select extract(person,'/Person/Associations/Association')
from xml_person_association o
where existsnode(person,'/Person/Associations/Association[OrganizationID=30097]')=1;
<Association>
<Name>TEST DATA</Name>
<OrganizationID>30097</OrganizationID>
</Association>
If I run the same style of existsnode statment against a table directly instead of a view I am not required to use an extract caluse that has the same path that is used in the existsnode clause.
Thanks for the help.
Message was edited by:
mdrakeTesting in 11g I get
SQL>
SQL>
SQL> set echo on
SQL> spool testcase.log
SQL> --
SQL> connect sys/ as sysdba
Enter password:
Connected.
SQL> set define on
SQL> set timing on
SQL> --
SQL> define USERNAME = XDBTEST
SQL> --
SQL> def PASSWORD = XDBTEST
SQL> --
SQL> def USER_TABLESPACE = USERS
SQL> --
SQL> def TEMP_TABLESPACE = TEMP
SQL> --
SQL> drop user &USERNAME cascade
2 /
old 1: drop user &USERNAME cascade
new 1: drop user XDBTEST cascade
User dropped.
Elapsed: 00:00:09.42
SQL> grant connect, resource to &USERNAME identified by &PASSWORD
2 /
old 1: grant connect, resource to &USERNAME identified by &PASSWORD
new 1: grant connect, resource to XDBTEST identified by XDBTEST
Grant succeeded.
Elapsed: 00:00:00.03
SQL> grant create any directory, drop any directory to &USERNAME
2 /
old 1: grant create any directory, drop any directory to &USERNAME
new 1: grant create any directory, drop any directory to XDBTEST
Grant succeeded.
Elapsed: 00:00:00.00
SQL> grant alter session, create view to &USERNAME
2 /
old 1: grant alter session, create view to &USERNAME
new 1: grant alter session, create view to XDBTEST
Grant succeeded.
Elapsed: 00:00:00.00
SQL> alter user &USERNAME default tablespace &USER_TABLESPACE temporary tablespace &TEMP_TABLESPACE
2 /
old 1: alter user &USERNAME default tablespace &USER_TABLESPACE temporary tablespace &TEMP_TABLESPACE
new 1: alter user XDBTEST default tablespace USERS temporary tablespace TEMP
User altered.
Elapsed: 00:00:00.00
SQL> connect &USERNAME/&PASSWORD
Connected.
SQL> --
SQL> alter session set events ='19027 trace name context forever, level 0x800'
2 /
Session altered.
Elapsed: 00:00:00.00
SQL> var xmlText1 clob
SQL> var xmlText2 clob
SQL> var xmlSchema clob
SQL> var schemaURL varchar2(256)
SQL> --
SQL> begin
2 :schemaURL := 'mcs.xsd';
3 :xmlSchema :=
4 '<!-- edited with XMLSpy v2007 sp2 (http://www.altova.com) by Shaun (PPD Inc) --> <s:schema xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:xdb=
"http://xmlns.oracle.com/xdb" elementFormDefault="qualified" xdb:storeVarrayAsTable="true">
5 <s:element name="Organization" type="Organization" xdb:defaultTable="ORG"/>
6 <s:element name="Person" type="Person" xdb:defaultTable="PERSON"/>
7 <s:element name="OrganizationPersonAssoc" type="Organization" xdb:defaultTable="ORG_PERSON_ASSOC"/>
8 <s:complexType name="Organization" xdb:SQLType="Organization">
9 <s:sequence minOccurs="0">
10 <s:element name="Name" type="s:string" nillable="true"/>
11 <s:element name="LongName" type="s:string" nillable="true"/>
12 <s:element name="Description" type="s:string" nillable="true"/>
13 <s:element name="FWANumber" type="s:string" nillable="true"/>
14 <s:element name="GUID" type="s:string" nillable="true"/>
15 <s:element name="CreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
16 <s:element name="LastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
17 <s:element name="RecordStatus" type="s:string" nillable="true"/>
18 <s:element name="RecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
19 <s:element name="OrganizationTypes" type="ArrayOfOrganizationType" minOccurs="0"/>
20 <s:element name="OrganizationSynonyms" type="ArrayOfOrganizationSynonym"/>
21 <s:element name="ImportedDate" type="s:date"/>
22 </s:sequence>
23 </s:complexType>
24 <s:complexType name="ArrayOfOrganizationType" xdb:SQLType="ArrayOfOrganizationType">
25 <s:sequence minOccurs="0">
26 <s:element name="OrganizationType" type="OrganizationType" minOccurs="0" maxOccurs="unbounded"/>
27 </s:sequence>
28 </s:complexType>
29 <s:complexType name="OrganizationType" xdb:SQLType="OrganizationType">
30 <s:sequence minOccurs="0">
31 <s:element name="OrganizationID" type="s:string"/>
32 <s:element name="Type" type="s:string" nillable="true"/>
33 <s:element name="QCDoneStatus" type="s:string" nillable="true"/>
34 <s:element name="QCDoneStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
35 <s:element name="SiteEstablishmentStatus" type="s:string" nillable="true"/>
36 <s:element name="SiteEstablishmentStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
37 <s:element name="IPFNumber" type="s:int"/>
38 <s:element name="DUNSNumber" type="s:int"/>
39 <s:element name="GUID" type="s:string" nillable="true"/>
40 <s:element name="CreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
41 <s:element name="LastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
42 <s:element name="RecordStatus" type="s:string" nillable="true"/>
43 <s:element name="RecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
44 <s:element name="LegacyCodes" type="ArrayOfLegacyCode" minOccurs="0"/>
45 <s:element name="Addresses" type="ArrayOfAddress" minOccurs="0"/>
46 <s:element name="ContactMechanisms" type="ArrayOfContactMechanism" minOccurs="0"/>
47 <s:element name="Associations" type="ArrayOfAssociation" minOccurs="0"/>
48 </s:sequence>
49 </s:complexType>
50 <s:complexType name="ArrayOfLegacyCode" xdb:SQLType="ArrayOfLegacyCode">
51 <s:sequence minOccurs="0">
52 <s:element name="LegacyCode" type="LegacyCode" minOccurs="0" maxOccurs="unbounded"/>
53 </s:sequence>
54 </s:complexType>
55 <s:complexType name="LegacyCode" xdb:SQLType="LegacyCode">
56 <s:sequence minOccurs="0">
57 <s:element name="Code" type="s:string" nillable="true"/>
58 <s:element name="NetworkID" type="s:string"/>
59 <s:element name="GUID" type="s:string" nillable="true"/>
60 <s:element name="CreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
61 <s:element name="LastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
62 <s:element name="RecordStatus" type="s:string" nillable="true"/>
63 <s:element name="RecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
64 </s:sequence>
65 </s:complexType>
66 <s:complexType name="ArrayOfAddress" xdb:SQLType="ArrayOfAddress">
67 <s:sequence minOccurs="0">
68 <s:element name="Address" type="Address" minOccurs="0" maxOccurs="unbounded"/>
69 </s:sequence>
70 </s:complexType>
71 <s:complexType name="Address" xdb:SQLType="Address">
72 <s:sequence minOccurs="0">
73 <s:element name="StreetName1" type="s:string" nillable="true"/>
74 <s:element name="StreetName2" type="s:string" nillable="true"/>
75 <s:element name="StreetName3" type="s:string" nillable="true"/>
76 <s:element name="StreetName4" type="s:string" nillable="true"/>
77 <s:element name="CityName" type="s:string" nillable="true"/>
78 <s:element name="CityGUID" type="s:string" nillable="true"/>
79 <s:element name="CityCreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
80 <s:element name="CityLastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
81 <s:element name="CityRecordStatus" type="s:string" nillable="true"/>
82 <s:element name="CityRecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
83 <s:element name="StateName" type="s:string" nillable="true"/>
84 <s:element name="StateGUID" type="s:string" nillable="true"/>
85 <s:element name="StateCreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
86 <s:element name="StateLastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
87 <s:element name="StateRecordStatus" type="s:string" nillable="true"/>
88 <s:element name="StateRecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
89 <s:element name="CountryName" type="s:string" nillable="true"/>
90 <s:element name="CountryCode" type="s:string" nillable="true"/>
91 <s:element name="CountryGUID" type="s:string" nillable="true"/>
92 <s:element name="CountryCreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
93 <s:element name="CountryLastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
94 <s:element name="CountryRecordStatus" type="s:string" nillable="true"/>
95 <s:element name="CountryRecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
96 <s:element name="ZipPostalCode" type="s:string" nillable="true"/>
97 <s:element name="GUID" type="s:string" nillable="true"/>
98 <s:element name="CreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
99 <s:element name="LastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
100 <s:element name="RecordStatus" type="s:string" nillable="true"/>
101 <s:element name="RecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
102 <s:element name="Type" type="s:string" nillable="true"/>
103 <s:element name="TypeOtherSpecify" type="s:string" nillable="true"/>
104 <s:element name="InternalOffice" type="s:string" nillable="true"/>
105 <s:element name="MailStopCode" type="s:string" nillable="true"/>
106 <s:element name="PreferredFlag" type="s:string" nillable="true"/>
107 <s:element name="ActiveFromDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
108 <s:element name="QCDoneStatus" type="s:string" nillable="true"/>
109 <s:element name="QCDoneStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
110 </s:sequence>
111 </s:complexType>
112 <s:complexType name="ArrayOfContactMechanism" xdb:SQLType="ArrayOfContactMechanism">
113 <s:sequence minOccurs="0">
114 <s:element name="ContactMechanism" type="ContactMechanism" minOccurs="0" maxOccurs="unbounded"/>
115 </s:sequence>
116 </s:complexType>
117 <s:complexType name="ContactMechanism" xdb:SQLType="ContactMechanism">
118 <s:sequence minOccurs="0">
119 <s:element name="ContactType" type="s:string" nillable="true"/>
120 <s:element name="ContactTypeOtherSpecify" type="s:string" nillable="true"/>
121 <s:element name="ContactValue" type="s:string" nillable="true"/>
122 <s:element name="ContactAreaCode" type="s:string" nillable="true"/>
123 <s:element name="ContactCountryCallingCode" type="s:int"/>
124 <s:element name="ContactTollFreeFlag" type="s:string" nillable="true"/>
125 <s:element name="ContactGUID" type="s:string" nillable="true"/>
126 <s:element name="ContactCreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
127 <s:element name="ContactLastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
128 <s:element name="ContactRecordStatus" type="s:string" nillable="true"/>
129 <s:element name="ContactRecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
130 <s:element name="Role" type="s:string" nillable="true"/>
131 <s:element name="PhoneExtension" type="s:string" nillable="true"/>
132 <s:element name="QCDoneStatus" type="s:string" nillable="true"/>
133 <s:element name="QCDoneStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
134 <s:element name="ActiveFromDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
135 <s:element name="GUID" type="s:string" nillable="true"/>
136 <s:element name="CreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
137 <s:element name="ModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
138 <s:element name="PreferredFlag" type="s:string" nillable="true"/>
139 <s:element name="RecordStatus" type="s:string" nillable="true"/>
140 <s:element name="RecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
141 </s:sequence>
142 </s:complexType>
143 <s:complexType name="ArrayOfAssociation" xdb:SQLType="ArrayOfAssociation">
144 <s:sequence minOccurs="0">
145 <s:element name="Association" type="Association" minOccurs="0" maxOccurs="unbounded"/>
146 </s:sequence>
147 </s:complexType>
148 <s:complexType name="Association" xdb:SQLType="Association">
149 <s:sequence minOccurs="0">
150 <s:element name="Role" type="s:string" nillable="true"/>
151 <s:element name="GUID" type="s:string" nillable="true"/>
152 <s:element name="QCDoneStatus" type="s:string" nillable="true"/>
153 <s:element name="QCDoneStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
154 <s:element name="CreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
155 <s:element name="LastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
156 <s:element name="RecordStatus" type="s:string" nillable="true"/>
157 <s:element name="RecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
158 <s:element name="Addresses" type="ArrayOfAddress" minOccurs="0"/>
159 <s:element name="ContactMechanisms" type="ArrayOfContactMechanism" minOccurs="0"/>
160 <s:element name="Persons" type="ArrayOfPerson" minOccurs="0"/>
161 </s:sequence>
162 </s:complexType>
163 <s:complexType name="ArrayOfPerson" xdb:SQLType="ArrayOfPerson">
164 <s:sequence minOccurs="0">
165 <s:element name="Person" type="Person" minOccurs="0" maxOccurs="unbounded"/>
166 </s:sequence>
167 </s:complexType>
168 <s:complexType name="Person" xdb:SQLType="Person">
169 <s:sequence minOccurs="0">
170 <s:element name="PersonID" type="s:int"/>
171 <s:element name="Prefix" type="s:string" nillable="true"/>
172 <s:element name="FirstName" type="s:string" nillable="true"/>
173 <s:element name="MiddleName" type="s:string" nillable="true"/>
174 <s:element name="LastName" type="s:string" nillable="true"/>
175 <s:element name="Suffix" type="s:string" nillable="true"/>
176 <s:element name="PreferredName" type="s:string" nillable="true"/>
177 <s:element name="Gender" type="s:string" nillable="true"/>
178 <s:element name="PrimaryLanguage" type="s:string" nillable="true"/>
179 <s:element name="GUID" type="s:string" nillable="true"/>
180 <s:element name="RecordStatus" type="s:string" nillable="true"/>
181 <s:element name="RecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
182 <s:element name="CreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
183 <s:element name="LastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
184 <s:element name="QCDoneStatus" type="s:string" nillable="true"/>
185 <s:element name="QCDoneStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
186 <s:element name="PersonDegrees" type="ArrayOfPersonDegree" minOccurs="0"/>
187 <s:element name="PersonSpecialties" type="ArrayOfPersonSpecialty" minOccurs="0"/>
188 <s:element name="PersonTypes" type="ArrayOfPersonType" minOccurs="0"/>
189 <s:element name="Addresses" type="ArrayOfAddress" minOccurs="0"/>
190 <s:element name="ContactMechanisms" type="ArrayOfContactMechanism" minOccurs="0"/>
191 <s:element name="ImportedDate" type="s:date"/>
192 </s:sequence>
193 </s:complexType>
194 <s:complexType name="ArrayOfPersonDegree" xdb:SQLType="ArrayOfPersonDegree">
195 <s:sequence minOccurs="0">
196 <s:element name="PersonDegree" type="PersonDegree" minOccurs="0" maxOccurs="unbounded"/>
197 </s:sequence>
198 </s:complexType>
199 <s:complexType name="PersonDegree" xdb:SQLType="PersonDegree">
200 <s:sequence minOccurs="0">
201 <s:element name="Code" type="s:string" nillable="true"/>
202 <s:element name="Major" type="s:string" nillable="true"/>
203 <s:element name="ListingOrder" type="s:int"/>
204 <s:element name="GUID" type="s:string" nillable="true"/>
205 <s:element name="RecordStatus" type="s:string" nillable="true"/>
206 <s:element name="RecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
207 <s:element name="CreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
208 <s:element name="LastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
209 </s:sequence>
210 </s:complexType>
211 <s:complexType name="ArrayOfPersonSpecialty" xdb:SQLType="ArrayOfPersonSpecialty">
212 <s:sequence minOccurs="0">
213 <s:element name="PersonSpecialty" type="PersonSpecialty" minOccurs="0" maxOccurs="unbounded"/>
214 </s:sequence>
215 </s:complexType>
216 <s:complexType name="PersonSpecialty" xdb:SQLType="PersonSpecialty">
217 <s:sequence minOccurs="0">
218 <s:element name="Name" type="s:string" nillable="true"/>
219 <s:element name="GUID" type="s:string" nillable="true"/>
220 <s:element name="RecordStatus" type="s:string" nillable="true"/>
221 <s:element name="RecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
222 <s:element name="CreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
223 <s:element name="LastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
224 </s:sequence>
225 </s:complexType>
226 <s:complexType name="ArrayOfPersonType" xdb:SQLType="ArrayOfPersonType">
227 <s:sequence minOccurs="0">
228 <s:element name="PersonType" type="PersonType" minOccurs="0" maxOccurs="unbounded"/>
229 </s:sequence>
230 </s:complexType>
231 <s:complexType name="PersonType" xdb:SQLType="PersonType">
232 <s:sequence minOccurs="0">
233 <s:element name="Type" type="s:string" nillable="true"/>
234 <s:element name="GUID" type="s:string" nillable="true"/>
235 <s:element name="RecordStatus" type="s:string" nillable="true"/>
236 <s:element name="RecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
237 <s:element name="CreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
238 <s:element name="LastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
239 <s:element name="QCDoneStatus" type="s:string" nillable="true"/>
240 <s:element name="QCDoneStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
241 </s:sequence>
242 </s:complexType>
243 <s:complexType name="ArrayOfOrganizationSynonym" xdb:SQLType="ArrayOfOrganizationSynonym">
244 <s:sequence minOccurs="0">
245 <s:element name="OrganizationSynonym" type="OrganizationSynonym" minOccurs="0" maxOccurs="unbounded"/>
246 </s:sequence>
247 </s:complexType>
248 <s:complexType name="OrganizationSynonym" xdb:SQLType="OrganizationSynonym">
249 <s:sequence minOccurs="0">
250 <s:element name="Name" type="s:string" nillable="true"/>
251 <s:element name="GUID" type="s:string" nillable="true"/>
252 <s:element name="CreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
253 <s:element name="LastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
254 <s:element name="RecordStatus" type="s:string" nillable="true"/>
255 <s:element name="RecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
256 </s:sequence>
257 </s:complexType>
258 </s:schema>';
259 :xmltext1 :=
260 '<?xml version="1.0" encoding="WINDOWS-1252"?> <Person xsi:noNamespaceSchemaLocation="mcs.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns
:xsi="http://www.w3.org/2001/XMLSchema-instance">
261 <PersonID>100448</PersonID>
262 <Prefix/>
263 <FirstName>John</FirstName>
264 <MiddleName/>
265 <LastName>Doe</LastName>
266 <Suffix/>
267 <PreferredName/>
268 <Gender/>
269 <PrimaryLanguage xsi:nil="true"/>
270 <GUID>ffff-ffff-ffff</GUID>
271 <RecordStatus>Active</RecordStatus>
272 <RecordStatusDate>2007-04-29T00:11:50.750000-04:00</RecordStatusDate>
273 <CreatedDate>2006-06-13T00:57:21.090000-04:00</CreatedDate>
274 <LastModifiedDate>2007-04-29T00:11:50.770000-04:00</LastModifiedDate>
275 <QCDoneStatus>Yes</QCDoneStatus>
276 <QCDoneStatusDate>2006-06-13T00:57:22.977000-04:00</QCDoneStatusDate>
277 <PersonDegrees>
278 <PersonDegree>
279 <Code>B.S.</Code>
280 <Major xsi:nil="true"/>
281 <ListingOrder>1</ListingOrder>
282 <GUID>d01bbcfd-9d48-47bf-818d-9957b907a664</GUID>
283 <RecordStatus>Active</RecordStatus>
284 <RecordStatusDate>2006-10-05T10:48:04.430000-04:00</RecordStatusDate>
285 <CreatedDate>2006-10-05T10:48:06.520000-04:00</CreatedDate>
286 <LastModifiedDate>2006-10-05T10:48:06.520000-04:00</LastModifiedDate>
287 </PersonDegree>
288 </PersonDegrees>
289 <PersonSpecialties/>
290 <PersonTypes>
291 <PersonType>
292 <Type>Resource Personnel</Type>
293 <GUID>3049ddcd-3590-4fd9-a534-e2cea5b82c09</GUID>
294 <RecordStatus>Active</RecordStatus>
295 <RecordStatusDate>2006-06-13T00:57:22.977000-04:00</RecordStatusDate>
296 <CreatedDate>2006-06-13T00:57:21.090000-04:00</CreatedDate>
297 <LastModifiedDate>2007-04-29T00:11:50.817000-04:00</LastModifiedDate>
298 <QCDoneStatus>Yes</QCDoneStatus>
299 <QCDoneStatusDate>2006-06-13T00:57:22.977000-04:00</QCDoneStatusDate>
300 </PersonType>
301 </PersonTypes>
302 <Addresses/>
303 <ContactMechanisms/>
304 <ImportedDate>2007-04-30</ImportedDate>
305 </Person>';
306 :xmltext2 :=
307 '<?xml version="1.0" encoding="WINDOWS-1252"?> <OrganizationPersonAssoc xsi:noNamespaceSchemaLocation="mcs.xsd" xmlns:xsd="http://www.w3.org/2001
/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
308 <Name>Org Name Office</Name>
309 <LongName>Long Name</LongName>
310 <Description xsi:nil="true"/>
311 <FWANumber xsi:nil="true"/>
312 <GUID>dddd-dddd</GUID>
313 <CreatedDate>2006-05-18T18:59:01.500000-04:00</CreatedDate>
314 <LastModifiedDate>2006-05-18T18:59:01.500000-04:00</LastModifiedDate>
315 <RecordStatus>Active</RecordStatus>
316 <RecordStatusDate>2006-05-18T18:59:01.500000-04:00</RecordStatusDate>
317 <OrganizationTypes>
318 <OrganizationType>
319 <OrganizationID>30097</OrganizationID>
320 <Type>Agency</Type>
321 <QCDoneStatus>Yes</QCDoneStatus>
322 <QCDoneStatusDate>2006-05-18T18:59:01.513000-04:00</QCDoneStatusDate>
323 <SiteEstablishmentStatus xsi:nil="true"/>
324 <SiteEstablishmentStatusDate>0001-01-01T00:00:00.000000-05:00</SiteEstablishmentStatusDate>
325 <IPFNumber>0</IPFNumber>
326 <DUNSNumber>0</DUNSNumber>
327 <GUID>cfe9e9e0-68a3-45c9-81c0-74848523133b</GUID>
328 <CreatedDate>2006-05-18T18:59:01.513000-04:00</CreatedDate>
329 <LastModifiedDate>2006-05-18T18:59:01.513000-04:00</LastModifiedDate>
330 <RecordStatus>Active</RecordStatus>
331 <RecordStatusDate>2006-05-18T18:59:01.513000-04:00</RecordStatusDate>
332 <Associations>
333 <Association>
334 <Role>Employee</Role>
335 <GUID>9a9a9a-ababab</GUID>
336 <QCDoneStatus>Yes</QCDoneStatus>
337 <QCDoneStatusDate>2006-06-13T01:29:09.030000-04:00</QCDoneStatusDate>
338 <CreatedDate>2006-06-13T01:29:09.030000-04:00</CreatedDate>
339 <LastModifiedDate>2006-07-25T15:27:23.783000-04:00</LastModifiedDate>
340 <RecordStatus>Active</RecordStatus>
341 <RecordStatusDate>2006-06-13T01:29:09.030000-04:00</RecordStatusDate>
342 <Addresses>
343 <Address>
344 <StreetName1>123 Front St.</StreetName1>
345 <StreetName2 xsi:nil="true"/>
346 <StreetName3 xsi:nil="true"/>
347 <StreetName4 xsi:nil="true"/>
348 <CityName>City</CityName>
349 <CityGUID>234234</CityGUID>
350 <CityCreatedDate>2006-05-08T20:06:45.143000-04:00</CityCreatedDate>
351 <CityLastModifiedDate>2006-05-08T20:06:45.143000-04:00</CityLastModifiedDate>
352 <CityRecordStatus>Active</CityRecordStatus>
353 <CityRecordStatusDate>2006-05-08T20:06:45.143000-04:00</CityRecordStatusDate>
354 <StateName>New York</StateName>
355 <StateGUID>9fd469e1-4d4a-4f38-9def-50038e5ecca2</StateGUID>
356 <StateCreatedDate>2006-04-22T16:09:35.830000-04:00</StateCreatedDate>
357 <StateLastModifiedDate>2006-04-22T16:09:35.830000-04:00</StateLastModifiedDate>
358 <StateRecordStatus>Active</StateRecordStatus>
359 <StateRecordStatusDate>2006-04-22T16:09:35.830000-04:00</StateRecordStatusDate>
360 <CountryName>United States</CountryName>
361 <CountryCode>USA</CountryCode>
362 <CountryGUID>532d35dd-3a49-408a-a416-20c41e9c7997</CountryGUID>
363 <CountryCreatedDate>2006-04-22T15:30:47.000000-04:00</CountryCreatedDate>
364 <CountryLastModifiedDate>2006-04-22T15:30:47.000000-04:00</CountryLastModifiedDate>
365 <CountryRecordStatus>Active</CountryRecordStatus>
366 <CountryRecordStatusDate>2006-04-22T15:30:47.000000-04:00</CountryRecordStatusDate>
367 <ZipPostalCode>12345</ZipPostalCode>
368 <GUID>b2414fa9-7375-4d26-8d76-89a6915d6751</GUID>
369 <CreatedDate>2006-06-13T01:29:09.030000-04:00</CreatedDate>
370 <LastModifiedDate>2006-07-29T23:45:17.670000-04:00</LastModifiedDate>
371 <RecordStatus>Active</RecordStatus>
372 <RecordStatusDate>2006-06-13T01:29:09.030000-04:00</RecordStatusDate>
373 <Type>Office</Type>
374 <TypeOtherSpecify/>
375 <InternalOffice></InternalOffice>
376 <MailStopCode/>
377 <PreferredFlag>Yes</PreferredFlag>
378 <ActiveFromDate>2006-06-13T01:29:09.000000-04:00</ActiveFromDate>
379 <QCDoneStatus>Yes</QCDoneStatus>
380 <QCDoneStatusDate>2006-06-13T01:29:09.030000-04:00</QCDoneStatusDate>
381 </Address>
382 </Addresses>
383 <ContactMechanisms>
384 <ContactMechanism>
385 <ContactType>Phone</ContactType>
386 <ContactTypeOtherSpecify xsi:nil="true"/>
387 <ContactValue>555-5555</ContactValue>
388 <ContactAreaCode>555</ContactAreaCode>
389 <ContactCountryCallingCode>1</ContactCountryCallingCode>
390 <ContactTollFreeFlag xsi:nil="true"/>
391 <ContactGUID>123</ContactGUID>
392 <ContactCreatedDate>2006-06-13T01:29:09.047000-04:00</ContactCreatedDate>
393 <ContactLastModifiedDate>2007-02-23T16:36:10.260000-05:00</ContactLastModifiedDate>
394 <ContactRecordStatus>Active</ContactRecordStatus>
395 <ContactRecordStatusDate>2006-06-13T01:29:09.047000-04:00</ContactRecordStatusDate>
396 <Role>Business</Role>
397 <PhoneExtension/>
398 <QCDoneStatus>Yes</QCDoneStatus>
399 <QCDoneStatusDate>2006-06-13T01:29:09.047000-04:00</QCDoneStatusDate>
400 <ActiveFromDate>2006-06-13T01:29:09.000000-04:00</ActiveFromDate>
401 <GUID>321</GUID>
402 <CreatedDate>2006-06-13T01:29:09.047000-04:00</CreatedDate>
403 <ModifiedDate>2006-07-29T23:53:03.323000-04:00</ModifiedDate>
404 <PreferredFlag>Yes</PreferredFlag>
405 <RecordStatus>Inactive</RecordStatus>
406 <RecordStatusDate>2006-07-29T23:53:03.393000-04:00</RecordStatusDate>
407 </ContactMechanism>
408 <ContactMechanism>
409 <ContactType>Email</ContactType>
410 <ContactTypeOtherSpecify xsi:nil="true"/>
411 <ContactValue>[email protected]</ContactValue>
412 <ContactAreaCode xsi:nil="true"/>
413 <ContactCountryCallingCode>0</ContactCountryCallingCode>
414 <ContactTollFreeFlag xsi:nil="true"/>
415 <ContactGUID>ddd</ContactGUID>
416 <ContactCreatedDate>2006-06-13T01:29:09.047000-04:00</ContactCreatedDate>
417 <ContactLastModifiedDate>2006-06-13T01:29:09.047000-04:00</ContactLastModifiedDate>
418 <ContactRecordStatus>Active</ContactRecordStatus>
419 <ContactRecordStatusDate>2006-06-13T01:29:09.047000-04:00</ContactRecordStatusDate>
420 <Role>Business</Role>
421 <PhoneExtension xsi:nil="true"/>
422 <QCDoneStatus>Yes</QCDoneStatus>
423 <QCDoneStatusDate>2006-06-13T01:29:09.063000-04:00</QCDoneStatusDate>
424 <ActiveFromDate>2006-06-13T01:29:09.063000-04:00</ActiveFromDate>
425 <GUID>111</GUID>
426 <CreatedDate>2006-06-13T01:29:09.063000-04:00</CreatedDate>
427 <ModifiedDate>2006-06-13T01:29:09.063000-04:00</ModifiedDate>
428 <PreferredFlag>Yes</PreferredFlag>
429 <RecordStatus>Active</RecordStatus>
430 <RecordStatusDate>2006-06-13T01:29:09.063000-04:00</RecordStatusDate>
431 </ContactMechanism>
432 </ContactMechanisms>
433 <Persons>
434 <Person>
435 <PersonID>100448</PersonID>
436 <Prefix/>
437 <FirstName>John</FirstName>
438 <MiddleName/>
439 <LastName>Doe</LastName>
440 <Suffix/>
441 <PreferredName/>
442 <Gender/>
443 <PrimaryLanguage xsi:nil="true"/>
444 <GUID>123</GUID>
445 <RecordStatus>Active</RecordStatus>
446 <RecordStatusDate>2007-04-29T00:11:50.750000-04:00</RecordStatusDate>
447 <CreatedDate>2006-06-13T00:57:21.090000-04:00</CreatedDate>
448 <LastModifiedDate>2007-04-29T00:11:50.770000-04:00</LastModifiedDate>
449 <QCDoneStatus>Yes</QCDoneStatus>
450 <QCDoneStatusDate>2006-06-13T00:57:22.977000-04:00</QCDoneStatusDate>
451 <PersonTypes>
452 <PersonType>
453 <Type>Resource Personnel</Type>
454 <GUID>3049ddcd-3590-4fd9-a534-e2cea5b82c09</GUID>
455 <RecordStatus>Active</RecordStatus>
456 <RecordStatusDate>2006-06-13T00:57:22.977000-04:00</RecordStatusDate>
457 <CreatedDate>2006-06-13T00:57:21.090000-04:00</CreatedDate>
458 <LastModifiedDate>2007-04-29T00:11:50.817000-04:00</LastModifiedDate>
459 <QCDoneStatus>Yes</QCDoneStatus>
460 <QCDoneStatusDate>2006-06-13T00:57:22.977000-04:00</QCDoneStatusDate>
461 </PersonType>
462 </PersonTypes>
463 </Person>
464 </Persons>
465 </Association>
466 </Associations>
467 </OrganizationType>
468 </OrganizationTypes>
469 <ImportedDate>2007-04-30</ImportedDate>
470 </OrganizationPersonAssoc>
471 ';
472 end;
473 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
SQL> begin
2 dbms_xmlschema.registerSchema
3 (
4 schemaURL => :schemaURL
5 ,schemaDoc => :xmlSchema
6 ,local => TRUE
7 ,genBean => false
8 ,genTypes => TRUE
9 ,genTables => TRUE
10 ,enableHierarchy => DBMS_XMLSCHEMA.ENABLE_HIERARCHY_NONE
11 );
12 end;
13 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:03.67
SQL> insert into Person values ( xmltype (:xmltext1))
2 /
1 row created.
Elapsed: 00:00:00.07
SQL> insert into org_person_assoc values ( xmltype (:xmltext2))
2 /
1 row created.
Elapsed: 00:00:00.03
SQL> commit
2 /
Commit complete.
Elapsed: 00:00:00.00
SQL> CREATE OR REPLACE VIEW XML_PERSON_ASSOCIATION
2 (PERSON)
3 AS
4 select
5 xmlelement("Person",
6 xmlforest(
7 extractvalue(value(p),'/Person/PersonID') "PersonID",
8 extractvalue(value(p),'/Person/Prefix') "Prefix",
9 extractvalue(value(p),'/Person/FirstName') "FirstName",
10 extractvalue(value(p),'/Person/MiddleName') "MiddleName",
11 extractvalue(value(p),'/Person/LastName') "LastName",
12 extractvalue(value(p),'/Person/Suffix') "Suffix",
13 extractvalue(value(p),'/Person/PreferredName') "PreferredName",
14 extractvalue(value(p),'/Person/Gender') "Gender",
15 extractvalue(value(p),'/Person/PrimaryLanguage') "PrimaryLanguage",
16 extractvalue(value(p),'/Person/RecordStatus') "RecordStatus",
17 extractvalue(value(p),'/Person/ImportedDate') "ImportedDate",
18 (select
19 xmlagg(
20 xmlelement("Association",
21 xmlforest(
22 extractvalue(value(oa),'/OrganizationPersonAssoc/Name') "Name",
23 extractvalue(value(ot),'/OrganizationType/OrganizationID') "OrganizationID",
24 extractvalue(value(ot),'/OrganizationType/Type') "OrganizationType",
25 extractvalue(value(a),'/Association/Role') "Role",
26 extractvalue(value(a),'/Association/RecordStatus') "RecordStatus",
27 extractvalue(value(oa),'/OrganizationPersonAssoc/ImportedDate') "ImportedDate"
28 ),
29 xmlelement("PersonTypes",
30 extract(value(per),'/Person/PersonTypes/PersonType')
31 ),
32 xmlelement("Addresses",
33 extract(value(a),'/Association/Addresses/Address')
34 ),
35 xmlelement("ContactMechanisms",
36 extract(value(a),'/Association/ContactMechanisms/ContactMechanism')
37 )
38 )
39 )
40 from org_person_assoc oa,
41 table(xmlsequence(extract(value(oa),'/OrganizationPersonAssoc/OrganizationTypes/OrganizationType'))) ot,
42 table(xmlsequence(extract(value(ot),'/OrganizationType/Associations/Association'))) a,
43 table(xmlsequence(extract(value(a),'/Association/Persons/Person'))) per
44 where extractvalue(value(per),'/Person/PersonID') = extractvalue(value(p),'/Person/PersonID')
45 ) "Associations"
46 )
47 ) person
48 from person p
49 /
View created.
Elapsed: 00:00:00.06
SQL> set autotrace on explain
SQL> --
SQL> set long 10000 pages 0 lines 150
SQL> --
SQL> select person
2 from xml_person_association o
3 where existsnode(person,'/Person/Associations/Association[OrganizationID=30097]')=1
4 /
<Person><PersonID>100448</PersonID><FirstName>John</FirstName><LastName>Doe</LastName><RecordStatus>Active</RecordStatus><ImportedDate>2007-04-30</Imp
ortedDate><Associations><Association><Name>Org Name Office</Name><OrganizationID>30097</OrganizationID><OrganizationType>Agency</OrganizationType><Rol
e>Employee</Role><RecordStatus>Active</RecordStatus><ImportedDate>2007-04-30</ImportedDate><PersonTypes><PersonType>
<Type>Resource Personnel</Type>
<GUID>3049ddcd-3590-4fd9-a534-e2cea5b82c09</GUID>
<RecordStatus>Active</RecordStatus>
<RecordStatusDate>2006-06-13T00:57:22.977000-04:00</RecordStatusDate>
<CreatedDate>2006-06-13T00:57:21.090000-04:00</CreatedDate>
<LastModifiedDate>2007-04-29T00:11:50.817000-04:00</LastModifiedDate>
<QCDoneStatus>Yes</QCDoneStatus>
<QCDoneStatusDate>2006-06-13T00:57:22.977000-04:00</QCDoneStatusDate>
</PersonType>
</PersonTypes><Addresses><Address>
<StreetName1>123 Front St.</StreetName1>
<StreetName2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<StreetName3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<StreetName4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<CityName>City</CityName>
<CityGUID>234234</CityGUID>
<CityCreatedDate>2006-05-08T20:06:45.143000-04:00</CityCreatedDate>
<CityLastModifiedDate>2006-05-08T20:06:45.143000-04:00</CityLastModifiedDate>
<CityRecordStatus>Active</CityRecordStatus>
<CityRecordStatusDate>2006-05-08T20:06:45.143000-04:00</CityRecordStatusDate>
<StateName>New York</StateName>
<StateGUID>9fd469e1-4d4a-4f38-9def-50038e5ecca2</StateGUID>
<StateCreatedDate>2006-04-22T16:09:35.830000-04:00</StateCreatedDate>
<StateLastModifiedDate>2006-04-22T16:09:35.830000-04:00</StateLastModifiedDate>
<StateRecordStatus>Active</StateRecordStatus>
<StateRecordStatusDate>2006-04-22T16:09:35.830000-04:00</StateRecordStatusDate>
<CountryName>United States</CountryName>
<CountryCode>USA</CountryCode>
<CountryGUID>532d35dd-3a49-408a-a416-20c41e9c7997</CountryGUID>
<CountryCreatedDate>2006-04-22T15:30:47.000000-04:00</CountryCreatedDate>
<CountryLastModifiedDate>2006-04-22T15:30:47.000000-04:00</CountryLastModifiedDate>
<CountryRecordStatus>Active</CountryRecordStatus>
<CountryRecordStatusDate>2006-04-22T15:30:47.000000-04:00</CountryRecordStatusDate>
<ZipPostalCode>12345</ZipPostalCode>
<GUID>b2414fa9-7375-4d26-8d76-89a6915d6751</GUID>
<CreatedDate>2006-06-13T01:29:09.030000-04:00</CreatedDate>
<LastModifiedDate>2006-07-29T23:45:17.670000-04:00</LastModifiedDate>
<RecordStatus>Active</RecordStatus>
<RecordStatusDate>2006-06-13T01:29:09.030000-04:00</RecordStatusDate>
<Type>Office</Type>
<TypeOtherSpecify/>
<InternalOffice/>
<MailStopCode/>
<PreferredFlag>Yes</PreferredFlag>
<ActiveFromDate>2006-06-13T01:29:09.000000-04:00</ActiveFromDate>
<QCDoneStatus>Yes</QCDoneStatus>
<QCDoneStatusDate>2006-06-13T01:29:09.030000-04:00</QCDoneStatusDate>
</Address>
</Addresses><ContactMechanisms><ContactMechanism>
<ContactType>Phone</ContactType>
<ContactTypeOtherSpecify xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<ContactValue>555-5555</ContactValue>
<ContactAreaCode>555</ContactAreaCode>
<ContactCountryCallingCode>1</ContactCountryCallingCode>
<ContactTollFreeFlag xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<ContactGUID>123</ContactGUID>
<ContactCreatedDate>2006-06-13T01:29:09.047000-04:00</ContactCreatedDate>
<ContactLastModifiedDate>2007-02-23T16:36:10.260000-05:00</ContactLastModifiedDate>
<ContactRecordStatus>Active</ContactRecordStatus>
<ContactRecordStatusDate>2006-06-13T01:29:09.047000-04:00</ContactRecordStatusDate>
<Role>Business</Role>
<PhoneExtension/>
<QCDoneStatus>Yes</QCDoneStatus>
<QCDoneStatusDate>2006-06-13T01:29:09.047000-04:00</QCDoneStatusDate>
<ActiveFromDate>2006-06-13T01:29:09.000000-04:00</ActiveFromDate>
<GUID>321</GUID>
<CreatedDate>2006-06-13T01:29:09.047000-04:00</CreatedDate>
<ModifiedDate>2006-07-29T23:53:03.323000-04:00</ModifiedDate>
<PreferredFlag>Yes</PreferredFlag>
<RecordStatus>Inactive</RecordStatus>
<RecordStatusDate>2006-07-29T23:53:03.393000-04:00</RecordStatusDate>
</ContactMechanism>
<ContactMechanism>
<ContactType>Email</ContactType>
<ContactTypeOtherSpecify xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<ContactValue>[email protected]</ContactValue>
<ContactAreaCode xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<ContactCountryCallingCode>0</ContactCountryCallingCode>
<ContactTollFreeFlag xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<ContactGUID>ddd</ContactGUID>
<ContactCreatedDate>2006-06-13T01:29:09.047000-04:00</ContactCreatedDate>
<ContactLastModifiedDate>2006-06-13T01:29:09.047000-04:00</ContactLastModifiedDate>
<ContactRecordStatus>Active</ContactRecordStatus>
<ContactRecordStatusDate>2006-06-13T01:29:09.047000-04:00</ContactRecordStatusDate>
<Role>Business</Role>
<PhoneExtension xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<QCDoneStatus>Yes</QCDoneStatus>
<QCDoneStatusDate>2006-06-13T01:29:09.063000-04:00</QCDoneStatusDate>
<ActiveFromDate>2006-06-13T01:29:09.063000-04:00</ActiveFromDate>
<GUID>111</GUID>
<CreatedDate>2006-06-13T01:29:09.063000-04:00</CreatedDate>
<ModifiedDate>2006-06-13T01:29:09.063000-04:00</ModifiedDate>
<PreferredFlag>Yes</PreferredFlag>
<RecordStatus>Active</RecordStatus>
<RecordStatusDate>2006-06-13T01:29:09.063000-04:00</RecordStatusDate>
</ContactMechanism>
</ContactMechanisms></Association></Associations></Person>
Elapsed: 00:00:00.42
Execution Plan
Plan hash value: 95656148
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 18040 | 9 (0)| 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | 10096 | | |
| 2 | TABLE ACCESS BY INDEX ROWID | SYS_NT32zHSpCZQ9ynComtqqKsrw== | 1 | 10096 | 2 (0)| 00:00:01 |
|* 3 | INDEX RANGE SCAN | SYS_C009300 | 1 | | 2 (0)| 00:00:01 |
| 4 | SORT AGGREGATE | | 1 | 48284 | | |
| 5 | TABLE ACCESS BY INDEX ROWID | SYS_NTjbkXqKq3S96fbEOM3Qs5Gg== | 1 | 48284 | 2 (0)| 00:00:01 |
|* 6 | INDEX RANGE SCAN | SYS_C009296 | 1 | | 2 (0)| 00:00:01 |
| 7 | SORT AGGREGATE | | 1 | 28187 | | |
| 8 | TABLE ACCESS BY INDEX ROWID| SYS_NTm2nBfKKNSGm6hs2e1Z0w/A== | 1 | 28187 | 2 (0)| 00:00:01 |
|* 9 | INDEX RANGE SCAN | SYS_C009297 | 1 | | 2 (0)| 00:00:01 |
| 10 | SORT AGGREGATE | | 1 | 13910 | | |
| 11 | NESTED LOOPS | | 1 | 13910 | 6 (0)| 00:00:01 |
| 12 | NESTED LOOPS | | 1 | 8131 | 5 (0)| 00:00:01 |
| 13 | NESTED LOOPS | | 1 | 4097 | 4 (0)| 00:00:01 |
|* 14 | TABLE ACCESS FULL | SYS_NT7Erd/G5iSPWX9w20Z5cNRg== | 1 | 43 | 3 (0)| 00:00:01 |
|* 15 | TABLE ACCESS BY INDEX ROWID | SYS_NTQWY/m3uES5GM7AByRclr8A== | 1 | 4054 | 1 (0)| 00:00:01 |
|* 16 | INDEX UNIQUE SCAN | SYS_C009310 | 1 | | 0 (0)| 00:00:01 |
|* 17 | TABLE ACCESS BY INDEX ROWID | SYS_NTTiDHMvB7RbSEfNxho66yQg== | 1 | 4034 | 1 (0)| 00:00:01 |
|* 18 | INDEX UNIQUE SCAN | SYS_C009314 | 1 | | 0 (0)| 00:00:01 |
| 19 | TABLE ACCESS BY INDEX ROWID | ORG_PERSON_ASSOC | 1 | 5779 | 1 (0)| 00:00:01 |
|* 20 | INDEX UNIQUE SCAN | SYS_C009320 | 1 | | 0 (0)| 00:00:01 |
|* 21 | FILTER | | | | | |
| 22 | TABLE ACCESS FULL | PERSON | 1 | 18040 | 3 (0)| 00:00:01 |
| 23 | NESTED LOOPS | | | | | |
| 24 | NESTED LOOPS | | 1 | 5893 | 6 (0)| 00:00:01 |
| 25 | NESTED LOOPS | | 1 | 2125 | 5 (0)| 00:00:01 |
| 26 | NESTED LOOPS | | 1 | 93 | 4 (0)| 00:00:01 |
|* 27 | TABLE ACCESS FULL | SYS_NT7Erd/G5iSPWX9w20Z5cNRg== | 1 | 43 | 3 (0)| 00:00:01 |
|* 28 | TABLE ACCESS BY INDEX ROWID| SYS_NTQWY/m3uES5GM7AByRclr8A== | 1 | 50 | 1 (0)| 00:00:01 |
|* 29 | INDEX UNIQUE SCAN | SYS_C009310 | 1 | | 0 (0)| 00:00:01 |
|* 30 | TABLE ACCESS BY INDEX ROWID | SYS_NTTiDHMvB7RbSEfNxho66yQg== | 1 | 2032 | 1 (0)| 00:00:01 |
|* 31 | INDEX UNIQUE SCAN | SYS_C009314 | 1 | | 0 (0)| 00:00:01 |
|* 32 | INDEX UNIQUE SCAN | SYS_C009320 | 1 | | 0 (0)| 00:00:01 |
| 33 | TABLE ACCESS BY INDEX ROWID | ORG_PERSON_ASSOC | 1 | 3768 | 1 (0)| 00:00:01 |
Predicate Information (identified by operation id):
3 - access("NESTED_TABLE_ID"=:B1)
6 - access("NESTED_TABLE_ID"=:B1)
9 - access("NESTED_TABLE_ID"=:B1)
14 - filter("SYS_NC_TYPEID$" IS NOT NULL AND "PersonID"=:B1)
15 - filter("SYS_NC_TYPEID$" IS NOT NULL)
16 - access("NESTED_TABLE_ID"="SYS_ALIAS_1"."SYS_NC0002700028$")
17 - filter("SYS_NC_TYPEID$" IS NOT NULL)
18 - access("NESTED_TABLE_ID"="SYS_ALIAS_0"."SYS_NC0003700038$")
20 - access("NESTED_TABLE_ID"="OA"."SYS_NC0002100022$")
21 - filter( EXISTS (SELECT 0 FROM "XDBTEST"."SYS_NT7Erd/G5iSPWX9w20Z5cNRg=="
"SYS_ALIAS_1","XDBTEST"."SYS_NTQWY/m3uES5GM7AByRclr8A=="
"SYS_ALIAS_3","XDBTEST"."SYS_NTTiDHMvB7RbSEfNxho66yQg==" "SYS_ALIAS_0","XDBTEST"."ORG_PERSON_ASSOC" "OA"
WHERE "SYS_ALIAS_0"."NESTED_TABLE_ID"="OA"."SYS_NC0002100022$" AND
"SYS_ALIAS_1"."NESTED_TABLE_ID"="SYS_ALIAS_0"."SYS_NC0003700038$" AND "SYS_ALIAS_0"."SYS_NC_TYPEID$" IS
NOT NULL AND TO_NUMBER("SYS_ALIAS_0"."OrganizationID")=30097 AND
"SYS_ALIAS_4"."NESTED_TABLE_ID"="SYS_ALIAS_1"."SYS_NC0002700028$" AND "SYS_ALIAS_1"."SYS_NC_TYPEID$" IS
NOT NULL AND "SYS_ALIAS_4"."SYS_NC_TYPEID$" IS NOT NULL AND "SYS_ALIAS_4"."PersonID"=:B1))
27 - filter("SYS_ALIAS_4"."SYS_NC_TYPEID$" IS NOT NULL AND "SYS_ALIAS_4"."PersonID"=:B1)
28 - filter("SYS_ALIAS_1"."SYS_NC_TYPEID$" IS NOT NULL)
29 - access("SYS_ALIAS_4"."NESTED_TABLE_ID"="SYS_ALIAS_1"."SYS_NC0002700028$")
30 - filter("SYS_ALIAS_0"."SYS_NC_TYPEID$" IS NOT NULL AND
TO_NUMBER("SYS_ALIAS_0"."OrganizationID")=30097)
31 - access("SYS_ALIAS_1"."NESTED_TABLE_ID"="SYS_ALIAS_0"."SYS_NC0003700038$")
32 - access("SYS_ALIAS_0"."NESTED_TABLE_ID"="OA"."SYS_NC0002100022$")
Note
- dynamic sampling used for this statement
SQL> select extract(person,'/Person/Associations/Association')
2 from xml_person_association o
3 where existsnode(person,'/Person/Associations/Association[OrganizationID=30097]')=1
4 /
<Association><Name>Org Name Office</Name><OrganizationID>30097</OrganizationID><OrganizationType>Agency</OrganizationType><Role>Employee</Role><Record
Status>Active</RecordStatus><ImportedDate>2007-04-30</ImportedDate><PersonTypes><PersonType><Type>Resource Personnel</Type><GUID>3049ddcd-3590-4fd9-a5
34-e2cea5b82c09</GUID><RecordStatus>Active</RecordStatus><RecordStatusDate>2006-06-13T00:57:22.977000-04:00</RecordStatusDate><CreatedDate>2006-06-13T
00: -
I have defined a view to get the data from an XMLTYPE table into relational form. I have a problem with opening this view with ADO and Delphi 6.
If I define my view like this:
CREATE OR REPLACE VIEW xml_test (versionsnr)
AS SELECT extractValue(value(xml),'/STANDAT/HEADER/@versionsnr')
FROM xmltable xml
I will the an error ORA-03114 when I try to select from the view with ADO. I have no problems when doing the select in sql*plus.
When I define the view like this:
CREATE OR REPLACE VIEW xml_test2 (versionsnr)
AS SELECT extractValue(value(header),'/HEADER/@versionsnr')
FROM xmltable xml,
table(xmlsequence(extract(value(xml),'/STANDAT/HEADER'))) header
,then it works everywhere, but it is significally slower with large amounts of data.
Interestingly enough, if the view contains a minus operator like below, then it also works everywhere.
CREATE OR REPLACE VIEW xml_test3 (versionsnr)
AS
(SELECT extractValue(value(xml),'/STANDAT/HEADER/@versionsnr')
FROM xmltable xml
MINUS
SELECT extractValue(value(xml),'/STANDAT/HEADER/@versionsnr')
FROM xmltablenew xml)
Do you have any experience with this? Is it a bug in ADO?Viktor,
Have you looked in the Oracle server trace file dump location to see if there are any trace files that correspond with the time/date of your Ora-03114 error.
Secondly, Have you tried to trace your session to see what is happening? -
Xmlsequence() problem
Hi,
I've got a problem with xmlsequence().
Here's (part of) my xml:
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<calypso:calypsoDocument xmlns:calypso="http://www.calypso.com/xml">
<calypso:calypsoObject xsi:type="calypso:Trade" action="SAVE" version="9-3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<calypso:identification>
<calypso:versionedIdentifier codifier="ds-dnca_dgenv06" code="5510" version="0"/>
</calypso:identification>
<calypso:tradeParty>
<calypso:legalEntity>
<calypso:identifier codifier="convention" code="OTC"/>
<calypso:role>MarketPlace</calypso:role>
</calypso:legalEntity>
<calypso:role>MarketPlace</calypso:role>
<calypso:feeParty>false</calypso:feeParty>
</calypso:tradeParty>
<calypso:tradeParty>
<calypso:legalEntity>
<calypso:identifier codifier="convention" code="PRO_21111114"/>
<calypso:role>CounterParty</calypso:role>
<calypso:role>Agent</calypso:role>
</calypso:legalEntity>
<calypso:role>CounterParty</calypso:role>
<calypso:feeParty>false</calypso:feeParty>
</calypso:tradeParty>
</calypso:calypsoObject>
</calypso:calypsoDocument>
The goal is to retrieve the legal entity and its role information into a table called STG_LEGENT_ROLE.
The table looks like this:
CREATE TABLE stg_legent_role
( odifier VARCHAR2(50)
, code VARCHAR2(50)
, ROLE VARCHAR2(50)
I've got metadata that builds up a sql statement to do this but I've got a problem with xml tags that can occur an infinite number of times within another tag that can occur an infinite number of times.
Like in this example: you can have multiple occurances of <role> within multiple occurances or <legalentity>.
Here's my sql statement:
SELECT
EXTRACTVALUE(VALUE(xml), '/calypso:legalEntity/calypso:identifier/@codifier', 'xmlns:calypso="http://www.calypso.com/xml"') codifier
, EXTRACTVALUE(VALUE(xml), '/calypso:legalEntity/calypso:identifier/@code', 'xmlns:calypso="http://www.calypso.com/xml"') code
, EXTRACTVALUE(VALUE(xml), '/calypso:legalEntity/calypso:role', 'xmlns:calypso="http://www.calypso.com/xml"') calypso_role
FROM RT_MESSAGE_HISTORY Q,
TABLE ( XMLSEQUENCE ( EXTRACT ( Q.MESSAGE_BODY, '/calypso:calypsoDocument/calypso:calypsoObject/calypso:tradeParty/calypso:legalEntity', 'xmlns:calypso="http://www.calypso.com/xml"'))) XML
WHERE Q.SEQUENCE = 3
But since the <role> can appear more than once I get following error:
ORA-19025: EXTRACTVALUE returns value of only one node
Is there a way to solve this? I would like the following result in my table:
codifier code role
convention OTC Marketplace
convention PRO_21111114 Counterparty
convention PRO_21111114 Agent
Any help would be greatly appreciated, thanks!Maybe if you tell us your DB version too we can make much simpler suggestions?!
For 9i (least common denominator) I'd propose
SQL> with t as (
select xmltype('<?xml version="1.0" encoding="WINDOWS-1252"?>
<calypso:calypsoDocument xmlns:calypso="http://www.calypso.com/xml">
<calypso:calypsoObject xsi:type="calypso:Trade" action="SAVE" version="9-3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<calypso:identification>
<calypso:versionedIdentifier codifier="ds-dnca_dgenv06" code="5510" version="0"/>
</calypso:identification>
<calypso:tradeParty>
<calypso:legalEntity>
<calypso:identifier codifier="convention" code="OTC"/>
<calypso:role>MarketPlace</calypso:role>
</calypso:legalEntity>
<calypso:role>MarketPlace</calypso:role>
<calypso:feeParty>false</calypso:feeParty>
</calypso:tradeParty>
<calypso:tradeParty>
<calypso:legalEntity>
<calypso:identifier codifier="convention" code="PRO_21111114"/>
<calypso:role>CounterParty</calypso:role>
<calypso:role>Agent</calypso:role>
</calypso:legalEntity>
<calypso:role>CounterParty</calypso:role>
<calypso:feeParty>false</calypso:feeParty>
</calypso:tradeParty>
</calypso:calypsoObject>
</calypso:calypsoDocument> ') xml from dual
select t2.column_value.extract('calypso:legalEntity/calypso:identifier/@codifier','xmlns:calypso="http://www.calypso.com/xml"').getstringval() codifier,
t2.column_value.extract('calypso:legalEntity/calypso:identifier/@code','xmlns:calypso="http://www.calypso.com/xml"').getstringval() code,
t3.column_value.extract('calypso:role/text()','xmlns:calypso="http://www.calypso.com/xml"').getstringval() role
from t t,
table(xmlsequence(t.xml.extract('//calypso:legalEntity','xmlns:calypso="http://www.calypso.com/xml"'))) t2,
table(xmlsequence(t2.column_value.extract('calypso:legalEntity/calypso:role','xmlns:calypso="http://www.calypso.com/xml"'))) t3
CODIFIER CODE ROLE
convention OTC MarketPlace
convention PRO_21111114 CounterParty
convention PRO_21111114 Agent
Maybe you are looking for
-
Hi, I am holding float value in a variable which i want to convert it into float again. Help Will be rewarded
-
HTTP sender Adapter - XML parsing issue in SAP PI
Dear All, We have a scenario where HTTP sends data to JDBC. We shared the URL with Sender application and they are trying to send the data to PI using URL. But when it comes to PI Integration Engine, we noticed the inbound payload in Plain text. Send
-
Phone was reset back to my old phone in October, and all my pictures t
-
Getting Started in 8i Personal
Hello!! Some days ago i download Oracle 8i Personal Edition. I don't have any problem to install in my Win98 But is hard to me begin to utilizing it, already read all the documentation that find but as newbie is very dificult to understand many thing
-
[Labview 8.5] Centrer les curseurs dynamiquement
Bonjour, J'aimerais savoir s'il est possible de centrer des curseurs sur un graphe XY de façon dynamique? J'ai chercher avec les noeuds de propriétés mais je n'ai rien trouvé! Merci d'avance pour votre réponse. Cordialement. S.