Code Listing 4: XPath Query Test for Both Storage Types

The following tests an XPath query against structured (object-relational) XML storage:

SQL> set autotrace on
SQL> select extractValue(po,'/PurchaseOrder/Reference')
  2    from structured_xml

  3   where existsNode(po,
  4  '/PurchaseOrder/LineItems/LineItem[@ItemNumber="1" and Part/@Id="715515009058"]') = 1
  5  /

EXTRACTVALUE(PO,'/PURCHASEORDE
------------------------------

ALLEN-20011127121042259PST
ALLEN-20011127121055378PST
BLAKE-2002100912333601PDT
FORD-20011127121040887PST
MARTIN-20011127121051563PST
MARTIN-20011127121051993PST
6 rows selected.


Elapsed: 00:00:00.53

Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE
   1    0   FILTER
   2    1     TABLE ACCESS (FULL) OF 'STRUCTURED_XML'

   3    1     COLLECTION ITERATOR (PICKLER FETCH)

Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
       6377  consistent gets
          0  physical reads
          0  redo size

        625  bytes sent via SQL*Net to client
        503  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          6  rows processed

The following tests an XPath query against CLOB XML storage:

SQL> select extractValue(po,'/PurchaseOrder/Reference')
  2    from clob_xml
  3   where existsNode(po,
  4  '/PurchaseOrder/LineItems/LineItem[@ItemNumber="1" and Part/@Id="715515009058"]') = 1
  5  /

EXTRACTVALUE(PO,'/PURCHASEORDER/REFERENCE')
----------------------------------------------------------------------------------------

ALLEN-20011127121042259PST
ALLEN-20011127121055378PST
BLAKE-2002100912333601PDT
FORD-20011127121040887PST
MARTIN-20011127121051563PST
MARTIN-20011127121051993PST
6 rows selected.

Elapsed: 00:00:01.79

Execution Plan
----------------------------------------------------------

   0      SELECT STATEMENT Optimizer=CHOOSE
   1    0   TABLE ACCESS (FULL) OF 'CLOB_XML'

Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
       1625  consistent gets
        757  physical reads
          0  redo size
        625  bytes sent via SQL*Net to client
        503  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client

          0  sorts (memory)
          0  sorts (disk)
6 rows processed
Oracle Is The Information Company About Oracle | Oracle RSS Feeds | Careers | Contact Us | Site Maps | Legal Notices | Terms of Use | Privacy