Problem encountered when join two remote tables in a materialized view

I'm using oracle 9.2.0.6
1> I have two tables:
CREATE TABLE TEST
A VARCHAR2(100 BYTE),
C DATE
CREATE TABLE TEST1
A VARCHAR2(100 BYTE),
B TIMESTAMP
2>. I defined a prebuild table:
CREATE TABLE MV_TEST1
ID1 ROWID,
A VARCHAR2(100 BYTE),
ID2 ROWID,
B TIMESTAMP(6),
C DATE
3> I created mview logs:
CREATE MATERIALIZED VIEW LOG ON PSI_TEST.TEST
WITH ROWID
INCLUDING NEW VALUES;
CREATE MATERIALIZED VIEW LOG ON PSI_TEST.TEST1
WITH ROWID
INCLUDING NEW VALUES;
4> when I create mview:
CREATE MATERIALIZED VIEW PSI_TEST.MV_TEST1
ON PREBUILT TABLE WITH REDUCED PRECISION
REFRESH FAST ON DEMAND
WITH PRIMARY KEY
AS
select
test.rowid id1,
test.a,
test1.rowid id2,
test1.b,
cast(null as date) c
from test , test1
where test.a = test1.a(+);
It is created successfully.
5> problem:
when I use remote tables to do the same thing, say test and test1 are in another instance and are connected by a dbLink, I couldn't create the mview successfully:
CREATE MATERIALIZED VIEW PSI_TEST.MV_TEST1
ON PREBUILT TABLE WITH REDUCED PRECISION
REFRESH FAST ON DEMAND
WITH PRIMARY KEY
AS
select
a.rowid id1,
a.a,
b.rowid id2,
b.b,
cast(null as date) c
from test@dbl a, test1@dbl b
where a.a = b.a(+);
when run above statement, I got:
ORA-12015: cannot create a fast refresh materialized view from a complex query
Any ideas? Or joining two table through a dblink for a mview is not allowed at all?
Thanks in advance.

No one has a clue?
Message was edited by:
lzhwxy

Similar Messages

  • Problem occured when create a tree table for master-detail view objects using SQL queries?

    I am programming a tree table for master-detail view objects using SQL queries and these 2 view objects are not simple singel tables queries, and 2 complex SQL are prepared for master and view objects. see below:
    1. Master View object (key attribute is SourceBlock and some varaible bindings are used for this view object.)
    SELECT  cntr_list.SOURCE_BLOCK,                   
            sum(                   
             case when cntr_list.cntr_size_q = '20'                   
                  then cntr_list.cntr_qty                   
                  else 0 end ) as cntr20 ,                   
            sum(                   
             case when cntr_list.cntr_size_q = '40'                   
                  then cntr_list.cntr_qty                   
                  else 0 end ) as cntr40 ,                   
             sum(                   
             case when cntr_list.cntr_size_q = '45'                   
                  then cntr_list.cntr_qty                   
                  else 0 end ) as cntr45                    
    FROM (       
        SELECT yb1.BLOCK_M as SOURCE_BLOCK,       
               scn.CNTR_SIZE_Q,        
               count(scn.CNTR_SIZE_Q) AS cntr_qty        
        FROM  SHIFT_CMR scm, SHIFT_CNTR scn, YARD_BLOCK yb1, YARD_BLOCK yb2       
        WHERE       
        scm.cmr_n = scn.cmr_n             
        AND (scm.plan_start_dt BETWEEN to_date(:DateFrom,'YYYY/MM/DD HH24:MI:SS') AND to_date(:DateTo,'YYYY/MM/DD HH24:MI:SS')                 
        OR scm.plan_end_dt BETWEEN to_date(:DateFrom,'YYYY/MM/DD HH24:MI:SS') AND to_date(:DateTo,'YYYY/MM/DD HH24:MI:SS'))                 
        AND scm.shift_mode_c = :ShiftModeCode                           
        AND scm.end_terminal_c = :TerminalCode      
        AND scm.start_terminal_c = yb1.terminal_c                  
        AND scm.start_block_n = yb1.block_n                  
        AND substr(scn.start_location_c,(instr(scn.start_location_c,',',1,5)+1),instr(scn.start_location_c,',',1,6)-(instr(scn.start_location_c,',',1,5)+1)) BETWEEN yb1.slot_from_n AND yb1.slot_to_n                  
        AND scm.end_terminal_c = yb2.terminal_c                  
        AND scm.end_block_n = yb2.block_n                  
        AND substr(scn.end_location_c,(instr(scn.end_location_c,',',1,5)+1),instr(scn.end_location_c,',',1,6)-(instr(scn.end_location_c,',',1,5)+1)) BETWEEN yb2.slot_from_n AND yb2.slot_to_n           
        AND scn.status_c not in (1, 11)             
        AND scn.shift_type_c = 'V'             
        AND scn.source_c = 'S'       
        GROUP BY yb1.BLOCK_M, scn.CNTR_SIZE_Q       
    ) cntr_list       
    GROUP BY cntr_list.SOURCE_BLOCK
    2. Detail View object (key attributes are SourceBlock and EndBlock and same varaible bindings are used for this view object.)
    SELECT  cntr_list.SOURCE_BLOCK, cntr_list.END_BLOCK,                
            sum(                     
             case when cntr_list.cntr_size_q = '20'                     
                  then cntr_list.cntr_qty                     
                  else 0 end ) as cntr20 ,                     
            sum(                     
             case when cntr_list.cntr_size_q = '40'                     
                  then cntr_list.cntr_qty                     
                  else 0 end ) as cntr40 ,                     
             sum(                     
             case when cntr_list.cntr_size_q = '45'                     
                  then cntr_list.cntr_qty                     
                  else 0 end ) as cntr45                      
    FROM (         
        SELECT yb1.BLOCK_M as SOURCE_BLOCK,     
               yb2.BLOCK_M as END_BLOCK,  
               scn.CNTR_SIZE_Q,          
               count(scn.CNTR_SIZE_Q) AS cntr_qty          
        FROM  SHIFT_CMR scm, SHIFT_CNTR scn, YARD_BLOCK yb1, YARD_BLOCK yb2         
        WHERE         
        scm.cmr_n = scn.cmr_n               
        AND (scm.plan_start_dt BETWEEN to_date(:DateFrom,'YYYY/MM/DD HH24:MI:SS') AND to_date(:DateTo,'YYYY/MM/DD HH24:MI:SS')                   
        OR scm.plan_end_dt BETWEEN to_date(:DateFrom,'YYYY/MM/DD HH24:MI:SS') AND to_date(:DateTo,'YYYY/MM/DD HH24:MI:SS'))                   
        AND scm.shift_mode_c = :ShiftModeCode                             
        AND scm.end_terminal_c = :TerminalCode        
        AND scm.start_terminal_c = yb1.terminal_c                    
        AND scm.start_block_n = yb1.block_n                    
        AND substr(scn.start_location_c,(instr(scn.start_location_c,',',1,5)+1),instr(scn.start_location_c,',',1,6)-(instr(scn.start_location_c,',',1,5)+1)) BETWEEN yb1.slot_from_n AND yb1.slot_to_n                    
        AND scm.end_terminal_c = yb2.terminal_c                    
        AND scm.end_block_n = yb2.block_n                    
        AND substr(scn.end_location_c,(instr(scn.end_location_c,',',1,5)+1),instr(scn.end_location_c,',',1,6)-(instr(scn.end_location_c,',',1,5)+1)) BETWEEN yb2.slot_from_n AND yb2.slot_to_n             
        AND scn.status_c not in (1, 11)               
        AND scn.shift_type_c = 'V'               
        AND scn.source_c = 'S'         
        GROUP BY yb1.BLOCK_M, yb2.BLOCK_M, scn.CNTR_SIZE_Q         
    ) cntr_list         
    GROUP BY cntr_list.SOURCE_BLOCK, cntr_list.END_BLOCK
    3. I create a view link to create master-detail relationship for these 2 view objects.
    masterview.SourceBlock (1)->detailview.SourceBlock (*).
    4. I create a tree table using these 2 view objects with master-detail relationship.
    When I set default value for variable bindings of these 2 view objects and the matching records exist, tree table can work well. I can expand the master row to display detail row in UI.
    But I need to pass in dymamic parameter value for variable bindings of these 2 view objects, tree table cannnot work again. when I expand the master row and no detail row are displayed in UI.
    I am sure that I pass in correct parameter value for master/detail view objects and matching records exist.
    Managed Bean:
            DCIteratorBinding dc = (DCIteratorBinding)evaluteEL("#{bindings.MasterView1Iterator}");
            ViewObject vo = dc.getViewObject();
            System.out.println("Before MasterView1Iterator vo.getEstimatedRowCount()="+ vo.getEstimatedRowCount());
            System.out.println("Before MasterView1Iterator ShiftModeCode="+ vo.ensureVariableManager().getVariableValue("ShiftModeCode"));
            vo.ensureVariableManager().setVariableValue("DateFrom", dateFrom);
            vo.ensureVariableManager().setVariableValue("DateTo", dateTo);
            vo.ensureVariableManager().setVariableValue("ShiftModeCode", shiftModeC);
            vo.ensureVariableManager().setVariableValue("TerminalCode", terminalCode);
            vo.executeQuery();
            System.out.println("MasterView1Iterator vo.getEstimatedRowCount()="+ vo.getEstimatedRowCount());
            DCIteratorBinding dc1 = (DCIteratorBinding)evaluteEL("#{bindings.DetailView1Iterator}");
            ViewObject vo1 = dc1.getViewObject();
            System.out.println("Before DetailView1Iterator vo1.getEstimatedRowCount()="+ vo1.getEstimatedRowCount());
            System.out.println("Before DetailView1Iterator ShiftModeCode="+ vo1.ensureVariableManager().getVariableValue("ShiftModeCode"));
            vo1.ensureVariableManager().setVariableValue("DateFrom", dateFrom);
            vo1.ensureVariableManager().setVariableValue("DateTo", dateTo);
            vo1.ensureVariableManager().setVariableValue("ShiftModeCode", shiftModeC);
            vo1.ensureVariableManager().setVariableValue("TerminalCode", terminalCode);
            vo1.executeQuery();
            System.out.println("after DetailView1Iterator vo1.getEstimatedRowCount()="+ vo1.getEstimatedRowCount());
    5.  What's wrong in my implementation?  I don't have no problem to implement such a tree table if using simple master-detail tables view object, but now I have to use such 2 view objects using complex SQL for my requirement and variable bindings are necessary for detail view object although I also think a bit strange by myself.

    Hi Frank,
    Thank you and it can work.
    public void setLowHighSalaryRangeForDetailEmployeesAccessorViewObject(Number lowSalary,
                                                                              Number highSalary) {
            Row r = getCurrentRow();
            if (r != null) {
                RowSet rs = (RowSet)r.getAttribute("EmpView");
                if (rs != null) {
                    ViewObject accessorVO = rs.getViewObject();
                    accessorVO.setNamedWhereClauseParam("LowSalary", lowSalary);
                    accessorVO.setNamedWhereClauseParam("HighSalary", highSalary);
                executeQuery();
    but I have a quesiton in this way. in code snippet, it is first getting current row of current master VO to determine if update variables value of detail VO. in my case, current row is possibly null after executeQuery() of master VO and  I have to change current row manually like below.
    any idea?
                DCIteratorBinding dc = (DCIteratorBinding)ADFUtil.evaluateEL("#{bindings.SSForecastSourceBlockView1Iterator}");
                ViewObject vo = dc.getViewObject();           
                vo.ensureVariableManager().setVariableValue("DateFrom", dateFrom);
                vo.ensureVariableManager().setVariableValue("DateTo", dateTo);
                vo.ensureVariableManager().setVariableValue("ShiftModeCode", shiftModeC);
                vo.ensureVariableManager().setVariableValue("TerminalCode", terminalCode);
                vo.executeQuery();
                vo.setCurrentRowAtRangeIndex(0);
                ((SSForecastSourceBlockViewImpl)vo).synchornizeAccessorVOVariableValues();

  • How to prevent Oracle from using an index when joining two tables ...

    How to prevent Oracle from using an index when joining two tables to get an inline view which is used in an update statement?
    O.K. I think I have to explain what I mean:
    When joining two tables which have many entries sometimes it es better not to use an index on the column used as join criteria.
    I have two tables: table A and table B.
    Table A has 4.000.000 entries and table B has 700.000 entries.
    I have a join of both tables with a numeric column as join criteria.
    There is an index on this column in table A.
    So I instead of
      where (A.col = B.col)I want to use
      where (A.col+0 = B.col)in order to prevent Oracle from using the index.
    When I use the join in a select statement it works.
    But when I use the join as inline view in an update statement I get the error ORA-01779.
    When I remove the "+0" the update statement works. (The column col is unique in table B).
    Any ideas why this happens?
    Thank you very much in advance for any help.
    Regards Hartmut

    I think you should post an properly formatted explain plan output using DBMS_XPLAN.DISPLAY including the "Predicate Information" section below the plan to provide more details regarding your query resp. update statement. Please use the \[code\] and \[code\] tags to enhance readability of the output provided:
    In SQL*Plus:
    SET LINESIZE 130
    EXPLAIN PLAN FOR <your statement>;
    SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);Usually if you're using the CBO (cost based optimizer) and have reasonable statistics gathered on the database objects used the optimizer should be able to determine if it is better to use the existing index or not.
    Things look different if you don't have statistics, you have outdated/wrong statistics or deliberately still use the RBO (rule based optimizer). In this case you would have to use other means to prevent the index usage, the most obvious would be the already mentioned NO_INDEX or FULL hint.
    But I strongly recommend to check in first place why the optimizer apparently seems to choose an inappropriate index access path.
    Regards,
    Randolf
    Oracle related stuff:
    http://oracle-randolf.blogspot.com/
    SQLTools++ for Oracle:
    http://www.sqltools-plusplus.org:7676/
    http://sourceforge.net/projects/sqlt-pp/

  • Joining two fact tables with different dimensions into single logical table

    Hi Gurus,
    I try to accomplish in Oracle Business Intelligence 11.1.1.3.0:
    F1 (D1, D2 and D3)
    F2 (D1 and D2 and D4)
    And we want to build a report F1 F2 D1 D2 D3 D4 to have data for:
    F1 that match only for D1-D2-D3
    and data for
    F2 that match only D1-D2-D4
    all that in one row, so D3 and D4 are not common dimensions.
    I can only do:
    F3 (D1, D2)
    F4 (D1, D2 and D4)
    And report
    F3 F4 D1,D2,D4 (all that in one row, and only D4 is not a common dimension)
    Here is the very good example how to accomplish the scenario 1
    http://108obiee.blogspot.com/2009/08/joining-two-fact-tables-with-different.html
    But looks like it does not work in 11.1.1.3.0
    I get
    State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 43113] Message returned from OBIS. [nQSError: 14025] No fact table exists at the requested level of detail: [,,Clients,,Day,ROI,,,,EW_Names,,,,,,,,,,,,,,,,,]. (HY000)
    I am sure I set up everything correctly as advised in the blog but it works with only one not a common dimension
    Is it a bug in 11.1.1.3.0 or something?
    Thanks,
    Kate

    Thanks for all your replies.
    Actually, I've tried the solutions you guys mentioned. Generally speaking, the result should be displayed. However, my scenario is a little bit tricky.
    table Y's figures are not the aggregation of table X for D dimension. Instead, table Y's figures include not only D dimension total, but also others (others do not mean A, B, C dimension). For example, table Y stores all food's figure, while table X stores only drink's figure. D dimension is only about drink's detail. In my scenario, other foods' figure is not provided.
    So, even if I set D dimension to all/total for table X, table X's result is still not the same as table Y.
    Indeed, table Y does not have a column key to join to D dimension's key. So, if I select D dimension and table Y's measures at the same time in BI Answer, result returns no data. Hence, I can't compare table X and table Y's results with selection of D dimension.
    Is there any solution to solve this problem?
    Edited by: TomChan on Jun 3, 2009 9:36 AM

  • Join two source tables and replicat into a target table with BLOB

    Hi,
    I am working on an integration to source transaction data from legacy application to ESB using GG.
    What I need to do is join two source tables (to de-normalize the area_id) to form the transaction detail, then transform by concatenate the transaction detail fields into a value only CSV, replicate it on the target ESB IN_DATA table's BLOB content field.
    Based on what I had researched, lookup by join two source tables require SQLEXEC, which doesn't support BLOB.
    What alternatives are there and what GG recommend in such use case?
    Any helpful advice is much appreciated.
    thanks,
    Xiaocun

    Xiaocun,
    Not sure what you're data looks like but it's possible the the comma separated value (CSV) requirement may be solved by something like this in your MAP statement:
    colmap (usedefaults,
    my_blob = @STRCAT (col02, ",", col03, ",", col04)
    Since this is not 1:1 you'll be using a sourcedefs file, which is nice because it will do the datatype conversion for you under the covers (also a nice trick when migrating long raws to blobs). So col02 can be varchar2, col03 a number, and col04 a clob and they'll convert in real-time.
    Mapping two tables to one is simple enough with two MAP statements, the harder challenge is joining operations from separate transactions because OGG is operation based and doesn't work on aggregates. It's possible you could end up using a combination of built in parameters and funcations with SQLEXEC and SQL/PL/SQL for more complicated scenarios, all depending on the design of the target table. But you have several scenarios to address.
    For example, is the target table really a history table or are you actually going to delete from it? If just the child is deleted but you don't want to delete the whole row yet, you may want to use NOCOMPRESSDELETES & UPDATEDELETES and COLMAP a new flag column to denote it was deleted. It's likely that the insert on the child may really mean an update to the target (see UPDATEINSERTS).
    If you need to update the LOB by appending or prepending new data then that's going to require some custom work, staging tables and a looping script, or a user exit.
    Some parameters you may want to become familiar with if not already:
    COLS | COLSEXCEPT
    COLMAP
    OVERRIDEDUPS
    INSERTDELETES
    INSERTMISSINGUPDATES
    INSERTUPDATES
    GETDELETES | IGNOREDELETES
    GETINSERTS | IGNOREINSERTS
    GETUPDATES | IGNOREUPDATES
    Good luck,
    -joe

  • Join two xmltype table using Xquery

    I am wondering how to join two xmltype tables in xml db database. both tables are schema based object-relational tables.
    these are the examples:
    academicProgram table contain batch of academicprogram.xml entries
    <academicProgram>
    <listOfCourse>
    <course><id>1</id></course>
    <course><id>2</id></course>
    </listOfCourse>
    </academicProgram>
    course table contain all the course entries, each of them is an xml file based on the the course schema. for example,
    course1.xml
    <course>
    <id>1</id>
    <title>xxxxxxx</title>
    <description>xxxxxxxxxxxxxx</description>
    </course>
    I used the following xquery code to merge the detailed course information from course table to the academic program information
    select *
    from XMLTable(
    for $program in ora:view("HTU", "ACADEMICPROGRAM")
    return <academicProgram xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog"
         for $node in $program/academicProgram/node()
         return if (name($node) eq "listOfCourse")
              then (
                   <listOfCourse>{
                   for $i in $node/course
                   for $j in ora:view("HTU", "COURSE")/course
                   where $i/id eq $j/id
                   return $j
                   }</listOfCourse>
              else $node
         </academicProgram>
    it did return what I want, but the problem is it take more than 5 minutes to finish. is there someway to make it run faster? I have been struggling for a week, please help.
    thanks in advance.
    Haili

    Does this work...
    SQL> var schemaURL varchar2(256)
    SQL> var schemaPath varchar2(256)
    SQL> --
    SQL> set autotrace on explain
    SQL> set lines 150 pages 0 long 10000
    SQL> --
    SQL> begin
      2    :schemaURL := 'http://aahmb10-147:7575/public/www.mdanderson.org/schema/APEP/custom.xsd';
      3    :schemaPath := '/public/custom.xsd';
      4  end;
      5  /
    PL/SQL procedure successfully completed.
    SQL> call dbms_xmlSchema.deleteSchema(:schemaURL,4)
      2  /
    Call completed.
    SQL> declare
      2    res boolean;
      3    xmlSchema xmlType := xmlType(
      4  '<xs:schema xmlns:apcustom="http://www.mdanderson.org/schema/APEP/custom" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="
    http://www.mdanderson.org/schema/APEP/custom" elementFormDefault="qualified" attributeFormDefault="unqualified">
      5    <xs:element name="CourseCatalogCustomDataType">
      6    <xs:annotation>
      7      <xs:documentation>Comment describing your root element</xs:documentation>
      8     </xs:annotation>
      9    </xs:element>
    10   </xs:schema>');
    11  begin
    12    if (dbms_xdb.existsResource(:schemaPath)) then
    13      dbms_xdb.deleteResource(:schemaPath);
    14    end if;
    15    res := dbms_xdb.createResource(:schemaPath,xmlSchema);
    16  end;
    17  /
    PL/SQL procedure successfully completed.
    SQL> begin
      2    dbms_xmlschema.registerSchema
      3    (
      4      :schemaURL,
      5      xdbURIType(:schemaPath).getClob(),
      6      TRUE,TRUE,FALSE,TRUE
      7    );
      8  end;
      9  /
    PL/SQL procedure successfully completed.
    SQL> begin
      2    :schemaURL := 'http://aahmb10-147:7575/public/www.mdanderson.org/schema/APEP/courseCatalog.xsd';
      3    :schemaPath := '/public/courseCatalog.xsd';
      4  end;
      5  /
    PL/SQL procedure successfully completed.
    SQL> call dbms_xmlSchema.deleteSchema(:schemaURL,4)
      2  /
    Call completed.
    SQL> declare
      2    res boolean;
      3    xmlSchema xmlType := xmlType(
      4  '<?xml version="1.0" encoding="UTF-8"?>
      5  <!--  edited with XMLSpy v2006 rel. 3 U (http://www.altova.com) by John Grossman (UT MD Anderson Cancer Center)
      6    -->
      7  <xs:schema xmlns:xdb="http://xmlns.oracle.com/xdb" xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog" xmlns:xs="http://www.w3.
    org/2001/XMLSchema" xmlns:ns1="http://www.mdanderson.org/schema/APEP/custom" targetNamespace="http://www.mdanderson.org/schema/APEP/courseCa
    talog" elementFormDefault="qualified" attributeFormDefault="unqualified" xdb:storeVarrayAsTable="true">
      8     <xs:import namespace="http://www.mdanderson.org/schema/APEP/custom" schemaLocation="http://aahmb10-147:7575/public/www.mdanderson.or
    g/schema/APEP/custom.xsd"/>
      9     <!-- ########################################  -->
    10     <!-- GLOBAL ELEMENTS  -->
    11     <!-- ########################################  -->
    12     <xs:element name="course" type="CourseType" xdb:defaultTable="COURSE">
    13             <xs:annotation>
    14                     <xs:documentation>Comment describing your root element</xs:documentation>
    15             </xs:annotation>
    16     </xs:element>
    17     <xs:element name="listOfCourse" type="ListOfCourseType" xdb:defaultTable="COURSELIST"/>
    18     <xs:element name="courseCatalog" type="CourseCatalogType" xdb:defaultTable="COURSECATALOG"/>
    19     <!-- ########################################  -->
    20     <!-- GLOBAL TYPES  -->
    21     <!-- ########################################  -->
    22     <xs:complexType name="CompositeIDType" xdb:SQLType="COURSE_COMPOSITEID_T">
    23             <xs:sequence>
    24                     <xs:element name="prefix" xdb:SQLName="PREFIX">
    25                             <xs:simpleType>
    26                                     <xs:restriction base="xs:string">
    27                                             <xs:length value="2"/>
    28                                     </xs:restriction>
    29                             </xs:simpleType>
    30                     </xs:element>
    31                     <xs:element name="level" type="xs:positiveInteger" xdb:SQLName="COURSELEVEL"/>
    32                     <xs:element name="creditHours" type="xs:positiveInteger" xdb:SQLName="CREDITHOURS"/>
    33                     <xs:element name="identNumber" xdb:SQLName="IDENTNUMBER">
    34                             <xs:simpleType>
    35                                     <xs:restriction base="xs:string">
    36                                             <xs:length value="2"/>
    37                                     </xs:restriction>
    38                             </xs:simpleType>
    39                     </xs:element>
    40             </xs:sequence>
    41     </xs:complexType>
    42     <xs:complexType name="CourseType" xdb:SQLType="COURSE_T">
    43             <xs:sequence>
    44                     <xs:element name="id" type="xs:integer" minOccurs="0" xdb:SQLName="ID"/>
    45                     <xs:element name="compositeID" type="CompositeIDType" minOccurs="0" xdb:SQLName="COMPOSITEID"/>
    46                     <xs:element name="title" type="xs:string" minOccurs="0" xdb:SQLName="TITLE"/>
    47                     <xs:element name="description" type="xs:string" minOccurs="0" xdb:SQLName="DESCRIPTION"/>
    48                     <xs:element name="corequisite" type="CompositeIDType" minOccurs="0" maxOccurs="unbounded" xdb:SQLName="COREQUISITE"
    xdb:defaultTable=""/>
    49                     <xs:element name="prerequisite" type="CompositeIDType" minOccurs="0" maxOccurs="unbounded" xdb:SQLName="PREREQUISITE
    " xdb:defaultTable=""/>
    50                     <xs:element name="availability" minOccurs="0" xdb:SQLName="AVAILABILITY">
    51                             <xs:complexType>
    52                                     <xs:sequence>
    53                                             <xs:element name="startDate" type="xs:date" minOccurs="0" xdb:SQLName="STARTDATE"/>
    54                                             <xs:element name="endDate" type="xs:date" minOccurs="0" xdb:SQLName="ENDDATE"/>
    55                                     </xs:sequence>
    56                             </xs:complexType>
    57                     </xs:element>
    58             </xs:sequence>
    59     </xs:complexType>
    60     <xs:complexType name="ListOfCourseType" xdb:SQLType="COURSE_LIST_T">
    61             <xs:sequence minOccurs="0" maxOccurs="unbounded">
    62                     <xs:element name="id" type="xs:positiveInteger" minOccurs="0" xdb:SQLName="ID"/>
    63                     <xs:element ref="course" minOccurs="0"/>
    64             </xs:sequence>
    65     </xs:complexType>
    66     <xs:complexType name="CourseCatalogType" xdb:SQLType="COURSE_CATALOG_T">
    67             <xs:sequence minOccurs="0">
    68                     <xs:element name="id" type="xs:positiveInteger" minOccurs="0" xdb:SQLName="ID"/>
    69                     <xs:element ref="listOfCourse" minOccurs="0"/>
    70             </xs:sequence>
    71     </xs:complexType>
    72  </xs:schema>');
    73  begin
    74    if (dbms_xdb.existsResource(:schemaPath)) then
    75      dbms_xdb.deleteResource(:schemaPath);
    76    end if;
    77    res := dbms_xdb.createResource(:schemaPath,xmlSchema);
    78  end;
    79  /
    PL/SQL procedure successfully completed.
    SQL> begin
      2    dbms_xmlschema.registerSchema
      3    (
      4      :schemaURL,
      5      xdbURIType(:schemaPath).getClob(),
      6      TRUE,TRUE,FALSE,TRUE
      7    );
      8  end;
      9  /
    PL/SQL procedure successfully completed.
    SQL> begin
      2    :schemaURL := 'http://aahmb10-147:7575/public/www.mdanderson.org/schema/APEP/academicProgram.xsd';
      3    :schemaPath := '/public/academicProgram.xsd';
      4  end;
      5  /
    PL/SQL procedure successfully completed.
    SQL> call dbms_xmlSchema.deleteSchema(:schemaURL,4)
      2  /
    Call completed.
    SQL> declare
      2    res boolean;
      3    xmlSchema xmlType := xmlType(
      4  '<?xml version="1.0" encoding="WINDOWS-1252"?>
      5  <!--  edited with XMLSpy v2006 rel. 3 U (http://www.altova.com) by John Grossman (UT MD Anderson Cancer Center)  -->
      6  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb" xmlns:ap="http://www.mdanderson.org/sche
    ma/APEP/courseCatalog" targetNamespace="http://www.mdanderson.org/schema/APEP/courseCatalog" elementFormDefault="qualified" attributeFormDef
    ault="unqualified" xdb:storeVarrayAsTable="true">
      7   <xs:include schemaLocation="http://aahmb10-147:7575/public/www.mdanderson.org/schema/APEP/courseCatalog.xsd" />
      8   <!-- ########################################  -->
      9   <!-- GLOBAL ELEMENTS  -->
    10   <!-- ########################################  -->
    11   <xs:element name="academicProgram" type="ap:AcademicProgramType" xdb:defaultTable="ACADEMICPROGRAM">
    12   <xs:annotation>
    13                     <xs:documentation>Comment describing your root element</xs:documentation>
    14             </xs:annotation>
    15     </xs:element>
    16   <!-- ########################################  -->
    17   <!-- GLOBAL Types  -->
    18   <!-- ########################################  -->
    19     <xs:complexType name="ListOfAcademicCredentialType" xdb:SQLType="ACADEMICCREDENTIAL_LIST_T">
    20             <xs:sequence minOccurs="0" maxOccurs="unbounded">
    21                     <xs:element name="credential" type="ap:AcademicCredentialType" minOccurs="0" xdb:SQLName="CREDENTIAL"/>
    22             </xs:sequence>
    23     </xs:complexType>
    24     <xs:complexType name="AcademicCredentialType" xdb:SQLType="ACADEMICCREDENTIAL_T">
    25             <xs:sequence minOccurs="0">
    26                     <xs:element name="id" type="xs:integer" minOccurs="0" xdb:SQLName="ID"/>
    27                     <xs:element name="field" type="xs:string" minOccurs="0" xdb:SQLName="FIELD">
    28                             <xs:annotation>
    29                                     <xs:documentation>Academic or professional field for which the credential is granted. Example: Clini
    ical Laboratory Science</xs:documentation>
    30                             </xs:annotation>
    31                     </xs:element>
    32                     <xs:element name="typeCode" minOccurs="0" xdb:SQLName="TYPECODE">
    33                             <xs:annotation>
    34                                     <xs:documentation>The type of credential. Example: Bachelor of Science</xs:documentation>
    35                             </xs:annotation>
    36                             <xs:simpleType>
    37                                     <xs:restriction base="xs:string">
    38                                             <xs:enumeration value="Bachelor of Science Degree"/>
    39                                             <xs:enumeration value="Certificate"/>
    40                                     </xs:restriction>
    41                             </xs:simpleType>
    42                     </xs:element>
    43             </xs:sequence>
    44     </xs:complexType>
    45     <xs:complexType name="RequirementType" xdb:SQLType="ACADEMICPROGRAM_REQ_T">
    46             <xs:sequence minOccurs="0">
    47                     <xs:element name="typeCode" type="xs:string" minOccurs="0" xdb:SQLName="TYPECODE"/>
    48                     <xs:element name="description" type="xs:string" minOccurs="0" xdb:SQLName="DESCRIPTION"/>
    49                     <xs:element name="scope" type="xs:string" minOccurs="0" xdb:SQLName="SCOPE"/>
    50             </xs:sequence>
    51     </xs:complexType>
    52     <xs:complexType name="ListOfRequirementType" xdb:SQLType="ACADEMICPROGRAM_REQ_L_T">
    53             <xs:sequence minOccurs="0">
    54                     <xs:element name="requirement" type="ap:RequirementType" minOccurs="0" xdb:SQLName="REQUIREMENT"/>
    55             </xs:sequence>
    56     </xs:complexType>
    57     <xs:complexType name="AcademicProgramType" xdb:SQLType="ACADEMICPROGRAM_T">
    58             <xs:sequence>
    59                     <xs:element name="name" type="xs:string" minOccurs="0" xdb:SQLName="NAME"/>
    60                     <xs:element name="description" type="xs:string" minOccurs="0" xdb:SQLName="DESCRIPTION"/>
    61                     <xs:element name="listOfAcademicCredential" type="ap:ListOfAcademicCredentialType" minOccurs="0"/>
    62                     <xs:element name="listOfRelatedParty" minOccurs="0" xdb:SQLName="LISTOFRELATEDPARTY"/>
    63                     <xs:element name="mission" type="xs:string" minOccurs="0" xdb:SQLName="MISSION"/>
    64                     <xs:element name="goals" type="xs:string" minOccurs="0" xdb:SQLName="GOAL"/>
    65                     <xs:element name="objectives" type="xs:string" minOccurs="0" xdb:SQLName="OBJECTIVES"/>
    66                     <xs:element name="competencies" minOccurs="0" xdb:SQLName="COMPETENCIES"/>
    67                     <xs:element name="selectionProcess" minOccurs="0" xdb:SQLName="SELECTIONPROCESS"/>
    68                     <xs:element name="listOfRequirement" type="ap:ListOfRequirementType" minOccurs="0"/>
    69                     <xs:element name="evaluationCriteria" minOccurs="0" xdb:SQLName="EVALUATIONCRITERIA"/>
    70                     <xs:element name="postBaccDegreeInfo" minOccurs="0" xdb:SQLName="POSTBACCDEGREEINFO"/>
    71                     <xs:element name="postBaccCertificateInfo" minOccurs="0" xdb:SQLName="POSTBACCCERTIFICATEINFO"/>
    72                     <xs:element name="advancedPlacement" minOccurs="0" xdb:SQLName="ADVANCEDPLACEMENT"/>
    73                     <xs:element name="graduation" minOccurs="0" xdb:SQLName="GRADUATION"/>
    74                     <xs:element name="curriculum" minOccurs="0" xdb:SQLName="CURRICULUM"/>
    75                     <xs:element name="listOfCourse" type="ap:ListOfCourseType" minOccurs="0" xdb:SQLName="LISTOFCOURSE"/>
    76             </xs:sequence>
    77     </xs:complexType>
    78  </xs:schema>
    79  ');
    80  begin
    81    if (dbms_xdb.existsResource(:schemaPath)) then
    82      dbms_xdb.deleteResource(:schemaPath);
    83    end if;
    84    res := dbms_xdb.createResource(:schemaPath,xmlSchema);
    85  end;
    86  /
    PL/SQL procedure successfully completed.
    SQL> begin
      2    dbms_xmlschema.registerSchema
      3    (
      4      :schemaURL,
      5      xdbURIType(:schemaPath).getClob(),
      6      TRUE,TRUE,FALSE,TRUE
      7    );
      8  end;
      9  /
    PL/SQL procedure successfully completed.
    SQL> insert into COURSE values ( xmltype(
      2  '<?xml version="1.0" encoding="WINDOWS-1252"?>
      3  <?altova_sps http://aahmb10-147:7575/public/www.mdanderson.org/template/APEP/courseInput.sps?>
      4  <course xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog" xmlns:ns1="http://www.mdanderson.org/schema/APEP/custom" xmlns:xdb=
    "http://xmlns.oracle.com/xdb" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mdanderson.org/schema/APE
    P/courseCatalog http://aahmb10-147:7575/public/www.mdanderson.org/schema/APEP/courseCatalog.xsd">
      5  <id>53</id>
      6  <compositeID>
      7  <prefix>CL</prefix>
      8  <level>4</level>
      9  <creditHours>1</creditHours>
    10  <identNumber>05</identNumber>
    11  </compositeID>
    12  <title>Urinalysis </title>
    13  <description>A review of the anatomy and physiology of the kidney and the formation, elimination, and composition of urine and body flu
    ids. Interpretation of urinary elements, chemical assays, and the correlation with normal and abnormal physiology.</description>
    14  </course>'))
    15  /
    1 row created.
    Execution Plan
    | Id  | Operation        | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | INSERT STATEMENT |      |     1 |   100 |     1   (0)| 00:00:01 |
    SQL> insert into COURSE values ( xmltype(
      2  '<?xml version="1.0" encoding="WINDOWS-1252"?>
      3  <?altova_sps http://aahmb10-147:7575/public/www.mdanderson.org/template/APEP/courseInput.sps?>
      4  <course xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog" xmlns:ns1="http://www.mdanderson.org/schema/APEP/custom" xmlns:xdb=
    "http://xmlns.oracle.com/xdb" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mdanderson.org/schema/APE
    P/courseCatalog http://aahmb10-147:7575/public/www.mdanderson.org/schema/APEP/courseCatalog.xsd">
      5  <id>54</id>
      6  <compositeID>
      7  <prefix>CL</prefix>
      8  <level>4</level>
      9  <creditHours>1</creditHours>
    10  <identNumber>05</identNumber>
    11  </compositeID>
    12  <title>Course 54</title>
    13  <description>A review of the anatomy and physiology of the kidney and the formation, elimination, and composition of urine and body flu
    ids. Interpretation of urinary elements, chemical assays, and the correlation with normal and abnormal physiology.</description>
    14  </course>'))
    15  /
    1 row created.
    Execution Plan
    | Id  | Operation        | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | INSERT STATEMENT |      |     1 |   100 |     1   (0)| 00:00:01 |
    SQL> insert into COURSE values ( xmltype(
      2  '<?xml version="1.0" encoding="WINDOWS-1252"?>
      3  <?altova_sps http://aahmb10-147:7575/public/www.mdanderson.org/template/APEP/courseInput.sps?>
      4  <course xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog" xmlns:ns1="http://www.mdanderson.org/schema/APEP/custom" xmlns:xdb=
    "http://xmlns.oracle.com/xdb" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mdanderson.org/schema/APE
    P/courseCatalog http://aahmb10-147:7575/public/www.mdanderson.org/schema/APEP/courseCatalog.xsd">
      5  <id>55</id>
      6  <compositeID>
      7  <prefix>CL</prefix>
      8  <level>4</level>
      9  <creditHours>1</creditHours>
    10  <identNumber>05</identNumber>
    11  </compositeID>
    12  <title>Course 55</title>
    13  <description>A review of the anatomy and physiology of the kidney and the formation, elimination, and composition of urine and body flu
    ids. Interpretation of urinary elements, chemical assays, and the correlation with normal and abnormal physiology.</description>
    14  </course>'))
    15  /
    1 row created.
    Execution Plan
    | Id  | Operation        | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | INSERT STATEMENT |      |     1 |   100 |     1   (0)| 00:00:01 |
    SQL> insert into ACADEMICPROGRAM values ( xmltype (
      2  '<?xml version="1.0" encoding="WINDOWS-1252"?>
      3  <!--Sample XML file generated by XMLSpy v2006 rel. 3 U (http://www.altova.com)-->
      4  <academicProgram xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog" xmlns:ns1="http://www.mdanderson.org/schema/APEP/custom" x
    mlns:xdb="http://xmlns.oracle.com/xdb" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mdanderson.org/s
    chema/APEP/courseCatalog http://aahmb10-147:7575/public/www.mdanderson.org/schema/APEP/academicProgram.xsd">
      5    <name>Clinical Laboratory Science</name>
      6    <description>The clinical laboratory scientist is an essential member of the health care team, performing a myriad of laboratory proc
    edures aimed at the diagnosis and treatment of disease.</description>
      7    <listOfAcademicCredential>
      8      <credential>
      9        <id>0</id>
    10        <field>String</field>
    11        <typeCode>Bachelor of Science Degree</typeCode>
    12      </credential>
    13      <credential>
    14        <id>0</id>
    15        <field>String</field>
    16        <typeCode>Bachelor of Science Degree</typeCode>
    17      </credential>
    18      <credential>
    19        <id>0</id>
    20        <field>String</field>
    21        <typeCode>Bachelor of Science Degree</typeCode>
    22      </credential>
    23    </listOfAcademicCredential>
    24    <listOfRelatedParty xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog"/>
    25    <mission>String</mission>
    26    <goals>String</goals>
    27    <objectives>String</objectives>
    28    <competencies xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog"/>
    29    <selectionProcess xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog"/>
    30    <listOfRequirement>
    31      <requirement>
    32        <typeCode>String</typeCode>
    33        <description>String</description>
    34        <scope>String</scope>
    35      </requirement>
    36    </listOfRequirement>
    37    <evaluationCriteria xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog"/>
    38    <postBaccDegreeInfo xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog"/>
    39    <postBaccCertificateInfo xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog"/>
    40    <advancedPlacement xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog"/>
    41    <graduation xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog"/>
    42    <curriculum xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog"/>
    43    <listOfCourse>
    44      <id>53</id>
    45      <course>
    46        <id>53</id>
    47        <compositeID>
    48          <prefix>CL</prefix>
    49          <level>4</level>
    50          <creditHours>1</creditHours>
    51          <identNumber>05</identNumber>
    52        </compositeID>
    53        <title>Biochemistry</title>
    54        <description>this is a test for the course biochemistry</description>
    55      </course>
    56      <course>
    57        <id>55</id>
    58        <compositeID>
    59          <prefix>CL</prefix>
    60          <level>4</level>
    61          <creditHours>1</creditHours>
    62          <identNumber>05</identNumber>
    63        </compositeID>
    64        <title>Something Else</title>
    65        <description>this is a test for the course biochemistry</description>
    66      </course>
    67    </listOfCourse>
    68  </academicProgram>'))
    69  /
    1 row created.
    Execution Plan
    | Id  | Operation        | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | INSERT STATEMENT |      |     1 |   100 |     1   (0)| 00:00:01 |
    SQL> select extractValue(value(c),'/course/id')
      2    from ACADEMICPROGRAM ap,
      3   table (xmlsequence(extract(value(ap),'/academicProgram/listOfCourse/course','xmlns="http://www.mdanderson.org/schema/APEP/courseCatalo
    g"'))) c
      4  /
                                     53
                                     55
    Execution Plan
    Plan hash value: 3351541143
    | Id  | Operation                    | Name               | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT             |                    |     2 |   126 |   804   (0)| 00:00:10 |
    |   1 |  NESTED LOOPS                |                    |     2 |   126 |   804   (0)| 00:00:10 |
    |*  2 |   INDEX FAST FULL SCAN       | SYS_IOT_TOP_177341 |     2 |    66 |   802   (0)| 00:00:10 |
    |*  3 |   TABLE ACCESS BY INDEX ROWID| ACADEMICPROGRAM    |     1 |    30 |     1   (0)| 00:00:01 |
    |*  4 |    INDEX UNIQUE SCAN         | SYS_C0022632       |     1 |       |     0   (0)| 00:00:01 |
    Predicate Information (identified by operation id):
       2 - filter("SYS_NC_TYPEID$" IS NOT NULL)
       3 - filter(SYS_CHECKACL("ACLOID","OWNERID",xmltype('<privilege
                  xmlns="http://xmlns.oracle.com/xdb/acl.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins
                  tance" xsi:schemaLocation="http://xmlns.oracle.com/xdb/acl.xsd
                  http://xmlns.oracle.com/xdb/acl.xsd DAV:http://xmlns.oracle.com/xdb/dav.xsd"><read-properti
                  es/><read-contents/></privilege>'))=1)
       4 - access("NESTED_TABLE_ID"="ACADEMICPROGRAM"."SYS_NC0004200043$")
    Note
       - dynamic sampling used for this statement
    SQL> select updateXML
      2         (
      3            ap.object_value,
      4            '/academicProgram/listOfCourse',
      5            ( select xmlelement
      6                     (
      7                       "listOfCourse",
      8                       xmlattributes('http://www.mdanderson.org/schema/APEP/courseCatalog' as "xmlns"),
      9                       ( select xmlagg ( xmlconcat(extract(object_value,'/course/id'), extract(object_value,'/course'))  )
    10                             from course c,
    11                            table (xmlsequence(extract(ap.object_value,'/academicProgram/listOfCourse/course','xmlns="http://www.mdanders
    on.org/schema/APEP/courseCatalog"'))) api
    12                            where extractValue(c.object_value,'/course/id') = extractValue(value(api),'/course/id')
    13                       )
    14                     ) from dual
    15            ),
    16            'xmlns:="http://www.mdanderson.org/schema/APEP/courseCatalog"'
    17          )
    18     from ACADEMICPROGRAM ap
    19  /
    <?xml version="1.0" encoding="WINDOWS-1252"?>
    <!--Sample XML file generated by XMLSpy v2006 rel. 3 U (http://www.altova.com)--><academicProgram xmlns="http://www.mdanderson.org/schema/AP
    EP/courseC
    atalog" xmlns:ns1="http://www.mdanderson.org/schema/APEP/custom" xmlns:xdb="http://xmlns.oracle.com/xdb" xmlns:xsi="http://www.w3.org/2001/X
    MLSchema-i
    nstance" xsi:schemaLocation="http://www.mdanderson.org/schema/APEP/courseCatalog http://aahmb10-147:7575/public/www.mdanderson.org/schema/AP
    EP/academi
    cProgram.xsd">
      <name>Clinical Laboratory Science</name>
      <description>The clinical laboratory scientist is an essential member of the health care team, performing a myriad of laboratory procedure
    s aimed at
    the diagnosis and treatment of disease.</description>
      <listOfAcademicCredential>
        <credential>
          <id>0</id>
          <field>String</field>
          <typeCode>Bachelor of Science Degree</typeCode>
        </credential>
        <credential>
          <id>0</id>
          <field>String</field>
          <typeCode>Bachelor of Science Degree</typeCode>
        </credential>
        <credential>
          <id>0</id>
          <field>String</field>
          <typeCode>Bachelor of Science Degree</typeCode>
        </credential>
      </listOfAcademicCredential>
      <listOfRelatedParty xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog"/>
      <mission>String</mission>
      <goals>String</goals>
      <objectives>String</objectives>
      <competencies xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog"/>
      <selectionProcess xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog"/>
      <listOfRequirement>
        <requirement>
          <typeCode>String</typeCode>
          <description>String</description>
          <scope>String</scope>
        </requirement>
      </listOfRequirement>
      <evaluationCriteria xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog"/>
      <postBaccDegreeInfo xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog"/>
      <postBaccCertificateInfo xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog"/>
      <advancedPlacement xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog"/>
      <graduation xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog"/>
      <curriculum xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog"/>
      <listOfCourse xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog">
        <id xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog">53</id>
        <course xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog" xmlns:ns1="http://www.mdanderson.org/schema/APEP/custom" xmlns:xdb="
    http://xml
    ns.oracle.com/xdb" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mdanderson.org/schema/APEP/courseCat
    alog http:
    //aahmb10-147:7575/public/www.mdanderson.org/schema/APEP/courseCatalog.xsd">
          <id>53</id>
          <compositeID>
            <prefix>CL</prefix>
            <level>4</level>
            <creditHours>1</creditHours>
            <identNumber>05</identNumber>
          </compositeID>
          <title>Urinalysis </title>
          <description>A review of the anatomy and physiology of the kidney and the formation, elimination, and composition of urine and body fl
    uids. Inte
    rpretation of urinary elements, chemical assays, and the correlation with normal and abnormal physiology.</description>
        </course>
        <id xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog">55</id>
        <course xmlns="http://www.mdanderson.org/schema/APEP/courseCatalog" xmlns:ns1="http://www.mdanderson.org/schema/APEP/custom" xmlns:xdb="
    http://xml
    ns.oracle.com/xdb" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mdanderson.org/schema/APEP/courseCat
    alog http:
    //aahmb10-147:7575/public/www.mdanderson.org/schema/APEP/courseCatalog.xsd">
          <id>55</id>
          <compositeID>
            <prefix>CL</prefix>
            <level>4</level>
            <creditHours>1</creditHours>
            <identNumber>05</identNumber>
          </compositeID>
          <title>Course 55</title>
          <description>A review of the anatomy and physiology of the kidney and the formation, elimination, and composition of urine and body fl
    uids. Inte
    rpretation of urinary elements, chemical assays, and the correlation with normal and abnormal physiology.</description>
        </course>
      </listOfCourse>
    </academicProgram>
    Execution Plan
    Plan hash value: 1698158615
    | Id  | Operation           | Name               | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT    |                    |     1 | 47932 |     3   (0)| 00:00:01 |
    |   1 |  SORT AGGREGATE     |                    |     1 | 13818 |            |          |
    |*  2 |   HASH JOIN         |                    |     1 | 13818 |     5  (20)| 00:00:01 |
    |*  3 |    INDEX RANGE SCAN | SYS_IOT_TOP_177341 |     1 |    33 |     2   (0)| 00:00:01 |
    |*  4 |    TABLE ACCESS FULL| COURSE             |     3 | 41355 |     3   (0)| 00:00:01 |
    |   5 |  FAST DUAL          |                    |     1 |       |     2   (0)| 00:00:01 |
    |*  6 |  TABLE ACCESS FULL  | ACADEMICPROGRAM    |     1 | 47932 |     3   (0)| 00:00:01 |
    Predicate Information (identified by operation id):
       2 - access("COURSE"."SYS_NC00009$"="ID")
       3 - access("NESTED_TABLE_ID"=:B1)
           filter("SYS_NC_TYPEID$" IS NOT NULL)
       4 - filter(SYS_CHECKACL("ACLOID","OWNERID",xmltype('<privilege
                  xmlns="http://xmlns.oracle.com/xdb/acl.xsd"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://xmlns.oracle.com/xdb/acl.xsd
                  http://xmlns.oracle.com/xdb/acl.xsd DAV:http://xmlns.oracle.com/xdb/dav.xsd"><read
                  -properties/><read-contents/></privilege>'))=1)
       6 - filter(SYS_CHECKACL("ACLOID","OWNERID",xmltype('<privilege
                  xmlns="http://xmlns.oracle.com/xdb/acl.xsd"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://xmlns.oracle.com/xdb/acl.xsd
                  http://xmlns.oracle.com/xdb/acl.xsd DAV:http://xmlns.oracle.com/xdb/dav.xsd"><read
                  -properties/><read-contents/></privilege>'))=1)
    Note
       - dynamic sampling used for this statement
    SQL>

  • Can we join two totals tables in ABAP Query

    Hey Gurus!
    Can we join two totals tables in ABAP query.
    I am tyring to join FAGFLEXT with internal orders totals table.
    Thanks
    S

    Hi,
    Report painter majorily operates around characteristics and key figures.
    ABAP query comes even more handy.  The advantage is -
    1. You can link many tables
    2. Create selection screen as you like to have
    3. User friendly report creation
    4.  Logic can also be coded.
    5. Authorization can be set
    I have written a article in SDN, which gives you an idea as to how to go about using ABAP query.  Have a look on this - [Article - Practical Usage of ABAP Query|https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/20f6b256-23be-2b10-8b93-cad83a617634]
    Regards,
    Sridevi

  • How to join two internal table rows in alternative manner into one internal table?

    How to join two internal table rows in alternative manner into one internal table?
    two internal tables are suppose itab1 &  itab2 & its data
    Header 1
    Header 2
    Header 3
    a
    b
    c
    d
    e
    f
    g
    h
    i
    Header 1
    Header 2
    Header 3
    1
    2
    3
    4
    5
    6
    7
    8
    9
    INTO itab3 data
    Header 1
    Header 2
    Header 3
    a
    b
    c
    1
    2
    3
    d
    e
    f
    4
    5
    6
    g
    h
    i
    7
    8
    9

    Hi Soubhik,
    I have added two additional columns for each internal table.
    Table_Count - It represents the Internal Table Number(ITAB1 -> 1, ITAB2 -> 2)
    Row_Count  - It represents the Row Count Number, increase the row count value 1 by one..
    ITAB1:
    Header 1
    Header 2
    Header 3
    Table_Count
    Row_Count
    a
    b
    c
    1
    1
    d
    e
    f
    1
    2
    g
    h
    i
    1
    3
    ITAB2:
    Header 1
    Header 2
    Header 3
    Table_Count
    Row_Count
    1
    2
    3
    2
    1
    4
    5
    6
    2
    2
    7
    8
    9
    2
    3
    Create the Final Internal table as same as the ITAB1/ITAB2 structure.
    "Data Declarations
    DATA: IT_FINAL LIKE TABLE OF ITAB1.          "Final Internal Table
    FIELD-SYMBOLS: <FS_TAB1> TYPE TY_TAB1,     "TAB1
                                   <FS_TAB2> TYPE TY_TAB2.     "TAB2
    "Assign the values for the additional two column for ITAB1
    LOOP AT ITAB1 ASSIGNING <FS_TAB1>.
         <FS_TAB1>-TABLE_COUNT = 1.             "Table value same for all row
         <FS_TAB1>-ROW_COUNT = SY-TABIX. "Index value
    ENDLOOP.
    "Assign the values for the additional two column for ITAB2
    LOOP AT ITAB2 ASSIGNING <FS_TAB2>.    
         <FS_TAB2>-TABLE_COUNT = 2.                  "Table value same for all row
         <FS_TAB2>-ROW_COUNT = SY-TABIX.      "Index value
    ENDLOOP.
    "Copy the First Internal Table 'ITAB1' to Final Table
    IT_FINAL[] = ITAB1[].
    "Copy the Second Internal Table 'ITAB2' to Final Table
    APPEND IT
    LOOP AT ITAB2 INTO WA_TAB2.
    APPEND WA_TAB2 TO IT_FINAL.
    ENDLOOP.
    "Sort the Internal Table based on TABLE_COUNT & ROW_COUNT
    SORT IT_FINAL BY  ROW_COUNT TABLE_COUNT.
    After sorting, check the output for IT_FINAL Table, you can find the required output as shown above.
    Regards
    Rajkumar Narasimman

  • Joining Two Internal Tables - ( Urgent )

    Could anybody please give me the whole code for joining two internal tables
    and putting the data in a third internal table. Please, very urgent.
                                                                                    Regards,
                                                                                    SAURAV

    Hi,
      Refer this code
    *&      Form  SUB_READ_VBRK
          text
    FORM sub_read_vbrk.
      SELECT vbeln
             rplnr
             bukrs
             FROM vbrk
             INTO TABLE it_vbrk
             WHERE vbeln IN s_vbeln
             AND   rplnr NE ' '.
      IF sy-subrc EQ 0.
        SORT it_vbrk BY rplnr.
      ENDIF.
    ENDFORM.                    " SUB_READ_VBRK
    *&      Form  SUB_READ_FPLTC
          text
    FORM sub_read_fpltc.
      IF NOT it_vbrk[] IS INITIAL.
        SELECT fplnr
               fpltr
               ccnum
               FROM fpltc
               INTO TABLE it_fpltc
               FOR ALL ENTRIES IN it_vbrk
               WHERE fplnr EQ it_vbrk-rplnr
               AND   ccins EQ 'GIFC'.
        IF sy-subrc EQ 0.
          SORT it_fpltc BY fplnr.
        ENDIF.
      ENDIF.
    ENDFORM.                    " SUB_READ_FPLTC
    *&      Form  SUB_COLLECT_DATA
          text
    FORM sub_collect_data.
    *--Local variables
      DATA : lv_count(3) TYPE c.
      IF NOT it_fpltc[] IS INITIAL.
        LOOP AT it_fpltc INTO wa_fpltc.
          lv_count = wa_fpltc-fpltr+3(3).
          wa_final-ccnum = wa_fpltc-ccnum.
          wa_final-rfzei = lv_count.
          CLEAR : wa_vbrk.
          READ TABLE it_vbrk INTO wa_vbrk WITH KEY rplnr = wa_fpltc-fplnr
                                                   BINARY SEARCH.
          IF sy-subrc EQ 0.
            wa_final-vbeln = wa_vbrk-vbeln.
            wa_final-bukrs = wa_vbrk-bukrs.
          ENDIF.
          APPEND wa_final TO it_final.
          CLEAR : wa_vbrk,
                  wa_fpltc,
                  lv_count.
        ENDLOOP.
      ENDIF.
    ENDFORM.                    " SUB_COLLECT_DATA
    Regards,
    prashant

  • Altering a table in a materialized view environment

    Hello everybody!.
    My question is as simple as this:
    When I have a single master - multiple materialized views environment , and I want to alter the master table (usually adding a column) , how do I propagate the change to the materialized view sites ?
    In Oracle's documentation manuals it is written the process ONLY for the master sites.If I manually just alter the materialized views to the mat.views sites , the new columns DON'T take data from the master table!
    It would be very nice if someone could help me.
    Thanks everybody on advance!.
    Thanasis Avdis

    Hi,
    you must dorp and recreate materialized view.

  • Table Operator Vs Materialized View Operator

    Hi All,
    Could you please give the differences between Table Operator and Materialized view Operator in Oracle Warehouse Builder 11g.
    Regards,
    Subbu

    Below an extract of my notes of the Materialized view. The complete notes are here :
    http://gerardnico.com/wiki/dw/aggregate_table
    =====Notes=====
    Materialized views are the equivalent of a summary table. (Materialized views can be also use as replica).
    In a olap approach, each of the elements of a dimension could be summarized using a hierarchy.
    The end user queries the tables and views in the database. The query rewrite mechanism in a database automatically rewrites the SQL query to use this summary tables.
    This mechanism reduces response time for returning results from the query. Materialized views within the data warehouse are transparent to the end user or to the database application.
    This is relatively straightforward and is answered in a single word - performance. By calculating the answers to the really hard questions up front (and once only), we will greatly reduce the load on the machine, We will experience:
    * Less physical reads - There is less data to scan through.
    * Less writes - We will not be sorting/aggregating as frequently.
    * Decreased CPU consumption - We will not be calculating aggregates and functions on the data, as we will have already done that.
    * Markedly faster response times - Our queries will return incredibly quickly when a summary is used, as opposed to the details. This will be a function of the amount of work we can avoid by using the materialized view, but many orders of magnitude is not out of the question.
    Materialized views will increase your need for one resource - more permanently allocated disk. We need extra storage space to accommodate the materialized views, of course, but for the price of a little extra disk space, we can reap a lot of benefit.
    Also notice that we may have created a materialized view, but when we ANALYZE, we are analyzing a table. A materialized view creates a real table, and this table may be indexed, analyzed, and so on.
    Success
    Nico

  • Strange problem when joining two tables

    Hi,
    I have recently encountered a strange problem on an Oracle 11gR2 database which is optimized for Datawarehouse usage.
    I am using two tables that have a relationship enforced by two fields of type NUMBER(10).
    The problem is that when I am joining these two tables very often I get strange results and when I re-execute the query I get a different result. I saw in the explain plan that the Hash Join is used for joining these two tables.
    select count(*)
    from recharge_history rh, recharge_history_balance rhb
    where rh.recharge_id = rhb.recharge_id
    and rh.recharge_id2 = rhb.recharge_id2
    and trunc(rh.recharge_date_time) between '30-Dec-2012' and '31-Dec-2012'
    If I explicitly set the Join method to some other type through SQL Hints, or if I use to_number function when joining (even though the two fields used for join in both tables are of NUMBER(10) type), I get the correct result, like for example below:
    select /*+ USE_MERGE (rh rhb) */
    count(*)
    from recharge_history rh, recharge_history_balance rhb
    where rh.recharge_id = rhb.recharge_id
    and rh.recharge_id2 = rhb.recharge_id2
    and trunc(rh.recharge_date_time) between '30-Dec-2012' and '31-Dec-2012'
    select
    count(*)
    from recharge_history rh, recharge_history_balance rhb
    where to_number(rh.recharge_id) = t_number(rhb.recharge_id)
    and to_number(rh.recharge_id2) = (to_number)rhb.recharge_id2)
    and trunc(rh.recharge_date_time) between '30-Dec-2012' and '31-Dec-2012'
    Thank you for your time.
    Edrin

    Hi, Edrin,
    961841 wrote:
    Hi,
    I have recently encountered a strange problem on an Oracle 11gR2 database which is optimized for Datawarehouse usage.
    I am using two tables that have a relationship enforced by two fields of type NUMBER(10).
    The problem is that when I am joining these two tables very often I get strange results and when I re-execute the query I get a different result. I saw in the explain plan that the Hash Join is used for joining these two tables.
    select count(*)
    from recharge_history rh, recharge_history_balance rhb
    where rh.recharge_id = rhb.recharge_id
    and rh.recharge_id2 = rhb.recharge_id2
    and trunc(rh.recharge_date_time) between '30-Dec-2012' and '31-Dec-2012'
    Don't try to compare DATEs with VARCHAR2s, such as '30-Dec-2012'. The VARCHAR2 '31-Aug-2012' is between '30-Dec-2012' and '31-Dec-2012'; so are '31-Aug-2013' and '30-Mar-1999'.
    That may not be your only problem, but it's still a problem.
    If you're getting incosistent results, then it sounds like a bug. Start a service request with Oracle support.

  • DataType conflict in the R/3 when joining two tables

    Hi Experts,
    I have created a view with two table in the R/3 side by joining two common fields,but one of the field is getting error with different data type, so could any one suggest me how to resolve this issue without changing type.
    Thanks,
    Venugopal

    Hi
    Actually I have to pull one of the  field from one table and place in other table and create a generic data source on it,Can any one suggest me with any solution or exists to solve this issue.
    Thanks,
    Venugopal

  • Join two fact tables

    Hi,
    I have two fact tables F1 and F2 joined with few dimensions D1.....D9. D1,D2 and D3 are conformed dimensions.
    In Physical:
    F1>--D1,D2,D3,D4,D5,D6
    F2>--D1,D2,D3,D7,D8,D9
    In Logical:
    F1>--D1,D2,D3,D4,D5,D6
    F2>--D1,D2,D3,D7,D8,D9
    there are some ports already using above star schemas. now I got new requirements and I need to use measures from both the fact tables and conformed and unconformed dimensions.
    I did the following in logical
    F1 LTS GENERAL TAB ADDED F2,D1,D2,D3,D7,D8,D9 and in content tab set logical level to unconformed dimensions at total level and for conformed dimensios at details level.
    F2 LTS GENERAL TAB ADDED F1,D1,D2,D3,D7,D8,D9 and in content tab set logical level to unconformed dimensions at total level and for conformed dimensios at details level.
    but I'm still getting
    [nQSError: 14026] Unable to navigate requested expression:
    Please fix the metadata consistency warnings. (HY000)
    I cheked metadata global consistency and no errors found.
    Appreciate your help
    Thanks
    Jay.
    Edited by: Jay on Sep 27, 2011 10:14 AM
    Edited by: Jay on Sep 27, 2011 10:15 AM

    Let me explain my issue again
    In Physical:
    F1>--D1,D2,D3,D4,D5,D6
    F2>--D1,D7
    In Logical: Single logical fact Fact_FY_Ratio has two logical sources
    LTS1: F1>--D1,D2,D3,D4,D5,D6
    LTS2: F2>--D1,D7
    Set the content level for each LTS in Fact_FY_Ratio:
    F1 to Detail for D1,D2,D3,D4,D5,D6 and to Total for D7
    F2 to Detail for D1,D7 and to Total for D2,D3,D4,D5,D6
    In LTS 1 general tab added inner joins with all dimensions F1,D1,D2,D3,D4,D5,D6,D7and F2
    In LTS 2 general tab added inner joins with all dimensions F2,D1,D7,D2,D3,D4,D5,D6 and F1
    And I also did logical complex join for Fact_FY_Ratio with all logical dimensions D1,D2,D3,D4,D5,D6,D7
    I'm able to run query using D1,D2,D3,D4,D5,D7,F1,F2 but when I include D6(time dimension) it is causing problem with F2(witth F1 it is working fine).
    query success with:
    F1,D1,D2,D3,D4,D5,D6
    F2,D1,D7
    D1,D2,D3,D4,D5,D7,F1,F2
    Query failed with:
    F2>--D1,D7 and D6
    Please let me know anything wrong with above configuration.
    Thanks
    Jay...
    Edited by: Jay on Oct 3, 2011 7:11 AM

  • Joining to remote table

    - I have two databases A and B
    - A has a db link to B
    I want to execute a select query in A which joins to a table in B using db link.
    select * from a_table where id in ( select id from b_table@B )
    Now the problem is, even though the local 'a_table' is very small, the remote table in B is really huge and hence the query is very slow.
    It seems like the join operation brings the whole remote data to A for performing the join.
    My question is, is it possible to do the other way? That is is, take the small 'a_table' to the remote database, perform the join there and then bring back the data.
    Any other hints/thoughts to solve this also is greatly appreciated.

    I am really sorry. The sample query was the other way round. A mistake in my description.
    I want to select data from B which joins to a table in A using db link.
    select * from b_table@B where id in ( select id from a_table )
    Arun, Thanks for the reply. But I am not sure if it will solve problem of transporting data from one db to another for performing the join.

Maybe you are looking for