Nested query for menu

I have a table that has id, category_parent and
category_name. How can I write a query so that I can get nested
<ul> as follwing:
<ul id="nav">
<li> <a href="#" >first Level menu</a>
<ul>
<li><a href="#" >second Level
menu</a></li>
<li><a href="#" >second Level menu</a>
<ul>
<li><a href="#" >third Level
menu</a></li>
</ul>
</li>
</ul>
</li>
</ul>
Please help!!
-A

Hi,
I think Ken Ford's solution will work for 2 levels only.
We need to use recursive function. I made the sampe. It will work for n levels.
I used a static data for this example. I assumed first level menu contain parent id as 0.
My code:
<!---<cfquery name="request.menu" datasource="#dsn#">
  select id, category_parent, category_name from menu menuTable
</cfquery>--->
<cfscript>
  q = QueryNew('id,category_parent,category_name');
  newRow = QueryAddRow(q, 4);
  QuerySetCell(q, "id", "1", 1);
  QuerySetCell(q, "category_parent", "0", 1);
  QuerySetCell(q, "category_name", "First Level -1", 1);
  QuerySetCell(q, "id", "2", 2);
  QuerySetCell(q, "category_parent", "0", 2);
  QuerySetCell(q, "category_name", "First Level -2", 2);
  QuerySetCell(q, "id", "3", 3);
  QuerySetCell(q, "category_parent", "0", 3);
  QuerySetCell(q, "category_name", "First Level -3", 3);
  QuerySetCell(q, "id", "4", 4);
  QuerySetCell(q, "category_parent", "2", 4);
  QuerySetCell(q, "category_name", "second Level -1", 4);
  request.menu = q;
</cfscript>
<cffunction name="getChilds">
  <cfargument name="pId">
  <cfquery name="qChilds" dbtype="query">
      select * from request.menu
      where category_parent = <cfqueryparam value="#arguments.pId#" cfsqltype="cf_sql_bigint">
    </cfquery>
  <cfif qChilds.recordCount gt 0>
    <cfoutput query="qChilds">
      <ul>
        <li><a href="##">#category_name#</a></li>
        #getChilds(id)#
      </ul> 
    </cfoutput>
  <cfelse>
    <cfreturn>
  </cfif>
</cffunction>
<cfoutput>#getChilds(0)#</cfoutput>

Similar Messages

  • SQL query for Menu list for a responsibility

    Dear All
    I want a Query to extract all menu prompt for a responsibility like
    Responsibility -------------------------- menu with prompt
    System Administrator-------------------------- Concurrent\Requests
    System Administrator-------------------------- Concurrent\Set
    System Administrator-------------------------- Concurrent\Conflicts Domains
    System Administrator-------------------------- Concurrent\Manager\Administer
    System Administrator-------------------------- Concurrent\Manager\Define
    System Administrator-------------------------- Concurrent\Manager\WorkShifts
    System Administrator-------------------------- Concurrent\Manager\Rule
    System Administrator-------------------------- Concurrent\Program\Define
    System Administrator-------------------------- Concurrent\Program\Executable
    System Administrator-------------------------- Concurrent\Program\Types
    System Administrator-------------------------- Profile\System
    System Administrator-------------------------- Profile\Personal
    list should be in order which is defined in apps menu.
    I will be great thankful you all.
    Regards
    Aamir

    I did not realize that the procedure has bugs. Sorry about that.
    It took some time to figure out but once fixed, the script works properly.
    I can't post the full code (due to Metalink restrictions) but here are the fixes I had to do.
    1) Do not cut and paste the whole code. It does not get formatted properly. Do small sections at a time.
    2) Change the quotes around the "STACK OVERFLOW". They are not proper.
    3) The code needs labels for the goto statements to work. Replace the first <> with <<label_outer>>. Replace the second <> with <<label_inner>>
    Sandeep Gandhi

  • How to write nested cursor for Adv. Collections dunning letter query

    I am trying to write a query for Advanced Collections duninng letters. Some accounts for this customer have invoices for more than one currency. In order to find all of the invoices this query works:
    select to_char(sysdate, 'MM/DD/YYYY') currsysdate,
    decode((per.person_first_name || per.person_last_name), null, ARPT_SQL_FUNC_UTIL.get_lookup_meaning('RESPONSIBILITY', 'APS'), per.person_first_name) first_name,
    per.person_last_name last_name,
    org.party_name org_name,
    loc.address1 address1,
    loc.address2 address2,
    loc.city city,
    loc.state state,
    loc.postal_code postal_code,
    per.person_first_name first_name1,
    (select sum(aps.amount_due_remaining)
    from
    iex_delinquencies_all dd,
    ar_payment_schedules_all aps
    where
    dd.payment_schedule_id = aps.payment_schedule_id and
    dd.party_cust_id = org.party_id and
    dd.cust_account_id = 255849 and
    dd.customer_site_use_id = 13071) total_amount_due_remaining,
    to_char(sysdate+7, 'MM/DD/YYYY') required_pay_date,
    rs.source_email collector_email,
    arc.alias collector_name,
    arc.telephone_number collector_phone,
    ar.account_number,
    cursor
    (select
    ct.trx_number invoice_number,
    to_char(ar.due_date, 'MM/DD/YYYY') due_date,
    ar.amount_due_remaining amount_due_remaining,
    ar.invoice_currency_code invoice_currency_code
    from
    iex_delinquencies_all d,
    ar_payment_schedules_all ar,
    ra_customer_trx_all ct
    where
    d.party_cust_id = org.party_id
    and d.cust_account_id = 255849
    and d.customer_site_use_id = 13071
    and d.payment_schedule_id = ar.payment_schedule_id
    and d.status = 'DELINQUENT'
    and ar.customer_trx_id = ct.customer_trx_id
    and ar.amount_due_remaining <> 0
    ) as payment_history
    from
    HZ_LOCATIONS loc
    ,hz_parties org
    ,hz_parties per
    ,jtf_rs_resource_extns rs
    ,ar_collectors arc
    ,hz_cust_accounts ar
    where
    loc.location_id = 11600
    and org.party_id= 255849
    --and per.party_id = nvl(:CONTACT_ID, org.party_id)
    and per.party_id = 255849
    and arc.resource_id = rs.resource_id
    and rs.RESOURCE_ID = 100022224
    and ar.cust_account_id = 182399
    But this assumes there is only one invoice currency but there isn't. Now I need to loop through all the distinct currencies in the ar_payment_schedules table so I was trying something like this:
    select to_char(sysdate, 'MM/DD/YYYY') currsysdate,
    decode((per.person_first_name || per.person_last_name), null, ARPT_SQL_FUNC_UTIL.get_lookup_meaning('RESPONSIBILITY', 'APS'), per.person_first_name) first_name,
    per.person_last_name last_name,
    org.party_name org_name,
    loc.address1 address1,
    loc.address2 address2,
    loc.city city,
    loc.state state,
    loc.postal_code postal_code,
    per.person_first_name first_name1,
    (select sum(aps.amount_due_remaining)
    from
    iex_delinquencies_all dd,
    ar_payment_schedules_all aps
    where
    dd.payment_schedule_id = aps.payment_schedule_id and
    dd.party_cust_id = org.party_id and
    dd.cust_account_id = 255849 and
    dd.customer_site_use_id = 13071) total_amount_due_remaining,
    to_char(sysdate+7, 'MM/DD/YYYY') required_pay_date,
    rs.source_email collector_email,
    arc.alias collector_name,
    arc.telephone_number collector_phone,
    ar.account_number,
    cursor
    (select distinct ar.invoice_currency_code invoice_currency_code
    from
    iex_delinquencies_all d,
    ar_payment_schedules_all ar,
    ra_customer_trx_all ct
    where
    d.party_cust_id = org.party_id
    and d.cust_account_id = 255849
    and d.customer_site_use_id = 13071
    and d.payment_schedule_id = ar.payment_schedule_id
    and d.status = 'DELINQUENT'
    and ar.customer_trx_id = ct.customer_trx_id
    and ar.amount_due_remaining <> 0
    cursor
    (select
    ct.trx_number invoice_number,
    to_char(ar.due_date, 'MM/DD/YYYY') due_date,
    ar.amount_due_remaining amount_due_remaining,
    --ar.invoice_currency_code invoice_currency_code
    from
    iex_delinquencies_all d,
    ar_payment_schedules_all ar,
    ra_customer_trx_all ct
    where
    d.party_cust_id = org.party_id
    and d.cust_account_id = 255849
    and d.customer_site_use_id = 13071
    and d.payment_schedule_id = ar.payment_schedule_id
    and d.status = 'DELINQUENT'
    and ar.customer_trx_id = ct.customer_trx_id
    and ar.amount_due_remaining <> 0
    and ar.invoice_currency_code = invoice_currency_code
    ) as payment_history
    ) as g_currency
    from
    HZ_LOCATIONS loc
    ,hz_parties org
    ,hz_parties per
    ,jtf_rs_resource_extns rs
    ,ar_collectors arc
    ,hz_cust_accounts ar
    where
    loc.location_id = 11600
    and org.party_id= 255849
    --and per.party_id = nvl(:CONTACT_ID, org.party_id)
    and per.party_id = 255849
    and arc.resource_id = rs.resource_id
    and rs.RESOURCE_ID = 100022224
    and ar.cust_account_id = 182399
    But I am getting missing right parenthesis error which leads me to think I am writing this correctly.

    Note the name of this forum is "SQL Developer *(Not for general SQL/PLSQL questions)*", so only for issues with the SQL Developer tool. Please post these questions under the dedicated SQL And PL/SQL forum (you've posted there before).
    Regards,
    K.

  • Query for getting Responsibility, Menu and submenus

    Hi,
    I need one query for getting Responsibilites, menus, submenus agian submenus like that..
    Pls share the query any body have.
    Thanks in advance,
    Hanimi.

    See user487104's post in Re: How to check a function is accessible under responsibility? .
    He has given a script to build the output.

  • How to use the same POWL query for multiple users

    Hello,
    I have defined a POWL query which executes properly. But if I map the same POWL query to 2 portal users and the 2 portal users try to access the same page simultaneously then it gives an error message to one of the users that
    "Query 'ABC' is already open in another session."
    where 'ABC' is the query name.
    Can you please tell me how to use the same POWL query for multiple users ?
    A fast reply would be highly appreciated.
    Thanks and Regards,
    Sandhya

    Batch processing usually involves using actions you have recorded.  In Action you can insert Path that can be used during processing documents.  Path have some size so you may want to only process document that have the same size.  Look in the Actions Palette fly-out menu for insert path.  It inserts|records the current document work path into the action being worked on and when the action is played it inserts the path into the document as the current work path..

  • Error while executing a sql query for select

    HI All,
    ORA-01652: unable to extend temp segment by 128 in tablespace PSTEMP i'm getting this error while i'm executing the sql query for selecting the data.

    I am having 44GB of temp space, while executing the below query my temp space is getting full, Expert please let us know how the issue can be resolved..
    1. I dont want to increase the temp space
    2. I need to tune the query, please provide your recomendations.
    insert /*+APPEND*/ into CST_DSA.HIERARCHY_MISMATCHES
    (REPORT_NUM,REPORT_TYPE,REPORT_DESC,GAP,CARRIED_ITEMS,CARRIED_ITEM_TYPE,NO_OF_ROUTE_OF_CARRIED_ITEM,CARRIED_ITEM_ROUTE_NO,CARRIER_ITEMS,CARRIER_ITEM_TYPE,CARRIED_ITEM_PROTECTION_TYPE,SOURCE_SYSTEM)
    select
    REPORTNUMBER,REPORTTYPE,REPORTDESCRIPTION ,NULL,
    carried_items,carried_item_type,no_of_route_of_carried_item,carried_item_route_no,carrier_items,
    carrier_item_type,carried_item_protection_type,'PACS'
    from
    (select distinct
    c.REPORTNUMBER,c.REPORTTYPE,c.REPORTDESCRIPTION ,NULL,
    a.carried_items,a.carried_item_type,a.no_of_route_of_carried_item,a.carried_item_route_no,a.carrier_items,
    a.carrier_item_type,a.carried_item_protection_type,'PACS'
    from CST_ASIR.HIERARCHY_asir a,CST_DSA.M_PB_CIRCUIT_ROUTING b ,CST_DSA.REPORT_METADATA c
    where a.carrier_item_type in('Connection') and a.carried_item_type in('Service')
    AND a.carrier_items=b.mux
    and c.REPORTNUMBER=(case
    when a.carrier_item_type in ('ServicePackage','Service','Connection') then 10
    else 20
    end)
    and a.carrier_items not in (select carried_items from CST_ASIR.HIERARCHY_asir where carried_item_type in('Connection') ))A
    where not exists
    (select *
    from CST_DSA.HIERARCHY_MISMATCHES B where
    A.REPORTNUMBER=B.REPORT_NUM and
    A.REPORTTYPE=B.REPORT_TYPE and
    A.REPORTDESCRIPTION=B.REPORT_DESC and
    A.CARRIED_ITEMS=B.CARRIED_ITEMS and
    A.CARRIED_ITEM_TYPE=B.CARRIED_ITEM_TYPE and
    A.NO_OF_ROUTE_OF_CARRIED_ITEM=B.NO_OF_ROUTE_OF_CARRIED_ITEM and
    A.CARRIED_ITEM_ROUTE_NO=B.CARRIED_ITEM_ROUTE_NO and
    A.CARRIER_ITEMS=B.CARRIER_ITEMS and
    A.CARRIER_ITEM_TYPE=B.CARRIER_ITEM_TYPE and
    A.CARRIED_ITEM_PROTECTION_TYPE=B.CARRIED_ITEM_PROTECTION_TYPE
    AND B.SOURCE_SYSTEM='PACS'
    Explain Plan
    ==========
    Plan
    INSERT STATEMENT ALL_ROWSCost: 129 Bytes: 1,103 Cardinality: 1                                                        
         20 LOAD AS SELECT CST_DSA.HIERARCHY_MISMATCHES                                                   
              19 PX COORDINATOR                                              
                   18 PX SEND QC (RANDOM) PARALLEL_TO_SERIAL SYS.:TQ10002 :Q1002Cost: 129 Bytes: 1,103 Cardinality: 1                                         
                        17 NESTED LOOPS PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 129 Bytes: 1,103 Cardinality: 1                                    
                             15 HASH JOIN RIGHT ANTI NA PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 129 Bytes: 1,098 Cardinality: 1                               
                                  4 PX RECEIVE PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 63 Bytes: 359,283 Cardinality: 15,621                          
                                       3 PX SEND BROADCAST PARALLEL_TO_PARALLEL SYS.:TQ10001 :Q1001Cost: 63 Bytes: 359,283 Cardinality: 15,621                     
                                            2 PX BLOCK ITERATOR PARALLEL_COMBINED_WITH_CHILD :Q1001Cost: 63 Bytes: 359,283 Cardinality: 15,621                
                                                 1 MAT_VIEW ACCESS FULL MAT_VIEW PARALLEL_COMBINED_WITH_PARENT CST_ASIR.HIERARCHY :Q1001Cost: 63 Bytes: 359,283 Cardinality: 15,621           
                                  14 NESTED LOOPS ANTI PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 65 Bytes: 40,256,600 Cardinality: 37,448                          
                                       11 HASH JOIN PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 65 Bytes: 6,366,160 Cardinality: 37,448                     
                                            8 BUFFER SORT PARALLEL_COMBINED_WITH_CHILD :Q1002               
                                                 7 PX RECEIVE PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 1 Bytes: 214 Cardinality: 2           
                                                      6 PX SEND BROADCAST PARALLEL_FROM_SERIAL SYS.:TQ10000 Cost: 1 Bytes: 214 Cardinality: 2      
                                                           5 INDEX FULL SCAN INDEX CST_DSA.IDX$$_06EF0005 Cost: 1 Bytes: 214 Cardinality: 2
                                            10 PX BLOCK ITERATOR PARALLEL_COMBINED_WITH_CHILD :Q1002Cost: 63 Bytes: 2,359,224 Cardinality: 37,448                
                                                 9 MAT_VIEW ACCESS FULL MAT_VIEW PARALLEL_COMBINED_WITH_PARENT CST_ASIR.HIERARCHY :Q1002Cost: 63 Bytes: 2,359,224 Cardinality: 37,448           
                                       13 TABLE ACCESS BY INDEX ROWID TABLE PARALLEL_COMBINED_WITH_PARENT CST_DSA.HIERARCHY_MISMATCHES :Q1002Cost: 0 Bytes: 905 Cardinality: 1                     
                                            12 INDEX RANGE SCAN INDEX PARALLEL_COMBINED_WITH_PARENT SYS.HIERARCHY_MISMATCHES_IDX3 :Q1002Cost: 0 Cardinality: 1                
                             16 INDEX RANGE SCAN INDEX PARALLEL_COMBINED_WITH_PARENT CST_DSA.IDX$$_06EF0001 :Q1002Cost: 1 Bytes: 5 Cardinality: 1

  • How to do a Nested Query ?

    I have three Tables Student, Courses, Marks
    Table : Student
    Columns
    StudentID <PK>
    First Name
    Last Name
    Table : Grades
    Columns
    StudentID <FK>
    Grade
    Table : Courses
    Columns
    StudentID <FK>
    CourseID
    CourseDesc
    Now to get all the course descriptions which this particular student is taking based on the StudentID we do something like this :
    SELECT c.courseDesc
    FROM Courses c, Student s
    WHERE s.StudentID = '100'
    AND s.StudentID = c.StudentID
    The above will work
    But If I need to do it in nested query how can I do it : Something like
    SELECT * FROM
    SELECT c.courseDesc
    FROM Courses c, Student s
    AND s.StudentID = c.StudentID
    WHERE s.StudentID = '100'
    Thanks for the help.
    Harsimrat

    oops,try this...
    SELECT * FROM (
    SELECT s.StudentID,c.courseDesc
    FROM Courses c, Student s
    WHERE s.StudentID = c.StudentID)
    WHERE StudentID = '100';
    SQL> select * from
      2  (select e.ename,d.deptno from test_dept d,test_emp e where e.deptno = d.deptno)
      3  where deptno = 10;
    ENAME          DEPTNO
    BLAKE              10
    CLARK              10
    KING               10
    MILLER             10
    SQL>

  • Question/issue regarding querying for uncommited objects in Toplink...

    Hi, was hoping to get some insight into this problem we are encoutering…
    We have this scenario were we are creating a folder hierarchy (using Toplink)
    1. a parent folder is created
    2. child elements are created (in the same transaction as step 1),
    3. we need to lookup the parent folder and assign it as the parent
    of these child elements
    4. end the transaction and commit all data
    In our system we control access to objects by appending a filter to the selection criteria, so we end up with SQL like this example
    (The t2 stuff is the authorization lookup part of the query.) ;
    SELECT t0.ID, t0.CLASS_NAME, t0.DESCRIPTION, t0.EDITABLE,
    t0.DATE_MODIFIED, t0.DATE_CREATED,
    t0.MODIFIED_BY, t0.ACL_ID, t0.NAME, t0.CREATED_BY,
    t0.TYPE_ID, t0.WKSP_ID, t1.ID, t1.LINK_SRC_PATH,
    t1.ABSOLUTE_PATH, t1.MIME_TYPE, t1.FSIZE,
    t1.CONTENT_PATH, t1.PARENT_ID
    FROM XDOOBJECT t0, ALL_OBJECT_PRIVILEGES t2,
    ARCHIVEOBJECT t1
    WHERE ((((t1.ABSOLUTE_PATH = '/favorites/twatson2')
    AND ((t1.ID = t2.xdoobject_id)
    AND ((t2.user_id = 'twatson2')
    AND (bitand(t2.privilege, 2) = 2))))
    AND (t1.ID = t0.ID))
    AND (t0.CLASS_NAME = 'oracle.xdo.server.repository.model.Archivable'))
    When creating new objects we also create the authorization lookup record (which is inserted into a different table.) I can see all the objects are registered in the UOW identity map.
    Basically, the issue is that this scenario all occurs in a single transaction and when querying for the newly created parent folder, if the authorization filter is appended to the query, the parent is not found. If I remove the authorization filter then the parent is found correctly. Or if I break this up into separate transactions and commit after each insert, then the parent is found correctly.
    I use the conformResultsInUnitOfWork attribute on the queries.
    This is related to an earlier thread I have in this discussion forum;
    Nested UnitOfWork and reading newly created objects...
    Thanks for any help you can provide,
    -Tim

    Hi Doug, we add the authorization filter directly in the application code as the query is getting set up.
    Here are some code examples; 1) the first is the code to create new object in the system, followed by 2) the code to create a new authorization lookup record (which also uses the first code to do the actual Toplink insert), then 3) an example of a read query where the authorization filter is appended to the Expression and after that 4) several helper methods.
    I hope this is of some use as it's difficult to show the complete flow in a simple example.
    1)
    // create new object example
    public Object DataAccess.createObject(....
    Object result = null;
    boolean inTx = true;
    UnitOfWork uow = null;
    try
    SessionContext sc = mScm.getCurrentSessionContext();
    uow = TLTransactionManager.getActiveTransaction(sc.getUserId());
    if (uow == null)
    Session session = TLSessionFactory.getSession();
    uow = session.acquireUnitOfWork();
    inTx = false;
    Object oclone = (Object) uow.registerObject(object);
    uow.assignSequenceNumbers();
    if (oclone instanceof BaseObject)
    BaseObject boclone = (BaseObject)oclone;
    Date now = new Date();
    boclone.setCreated(now);
    boclone.setModified(now);
    boclone.setModifiedBy(sc.getUserId());
    boclone.setCreatedBy(sc.getUserId());
    uow.printRegisteredObjects();
    uow.validateObjectSpace();
    if (inTx == false) uow.commit();
    //just temp, see above
    if (true == authorizer.requiresCheck(oclone))
    authorizer.grantPrivilege(oclone);
    result = oclone;
    2)
    // Authorizer.grantPrivilege method
    public void grantPrivilege(Object object) throws DataAccessException
    if (requiresCheck(object) == false)
    throw new DataAccessException(
    "Object does not implement Securable interface.");
    Securable so = (Securable)object;
    ModulePrivilege[] privs = so.getDefinedPrivileges();
    BigInteger pmask = new BigInteger("0");
    for (int i = 0; i < privs.length; i++)
    BigInteger pv = PrivilegeManagerFactory.getPrivilegeValue(privs);
    pmask = pmask.add(pv);
    SessionContext sc = mScm.getCurrentSessionContext();
    // the authorization lookup record
    ObjectUserPrivilege oup = new ObjectUserPrivilege();
    oup.setAclId(so.getAclId());
    oup.setPrivileges(pmask);
    oup.setUserId(sc.getUserId());
    oup.setXdoObjectId(so.getId());
    try
    // this recurses back to the code snippet from above
    mDataAccess.createObject(oup, this);
    catch (DataAccessException dae) {
    Object[] args = {dae.getClass().toString(), dae.getMessage()};
    logger.severe(MessageFormat.format(EXCEPTION_MESSAGE, args));
    throw new DataAccessException("Failed to grant object privilege.", dae);
    3)
    // example Query code
    Object object = null;
    ExpressionBuilder eb = new ExpressionBuilder();
    Expression exp = eb.get(queryKeys[0]).equal(keyValues[0]);
    for (int i = 1; i < queryKeys.length; i++)
    exp = exp.and(eb.get(queryKeys[i]).equal(keyValues[i]));
    // check if need to add authorization filter
    if (authorizer.requiresCheck(domainClass) == true)
    // this is where the authorization filter is appended to query
    exp = exp.and(appendReadFilter());
    ReadObjectQuery query = new ReadObjectQuery(domainClass, exp);
    SessionContext sc = mScm.getCurrentSessionContext();
    if (TLTransactionManager.isInTransaction(sc.getUserId()))
    // part of a larger transaction scenario
    query.conformResultsInUnitOfWork();
    else
    // not part of a transaction
    query.refreshIdentityMapResult();
    query.cascadePrivateParts();
    Session session = getSession();
    object = session.executeQuery(query);
    4)
    // builds the authorzation filter
    private Expression appendReadFilter()
    ExpressionBuilder eb = new ExpressionBuilder();
    Expression exp1 = eb.getTable("ALL_OBJECT_PRIVILEGES").getField("xdoobject_id");
    Expression exp2 = eb.getTable("ALL_OBJECT_PRIVILEGES").getField("user_id");
    Expression exp3 = eb.getTable("ALL_OBJECT_PRIVILEGES").getField("privilege");
    Vector args = new Vector();
    args.add(READ_PRIVILEGE_VALUE);
    Expression exp4 =
    exp3.getFunctionWithArguments("bitand",args).equal(READ_PRIVILEGE_VALUE);
    SessionContext sc = mScm.getCurrentSessionContext();
    return eb.get("ID").equal(exp1).and(exp2.equal(sc.getUserId()).and(exp4));
    // helper to get Toplink Session
    private Session getSession() throws DataAccessException
    SessionContext sc = mScm.getCurrentSessionContext();
    Session session = TLTransactionManager.getActiveTransaction(sc.getUserId());
    if (session == null)
    session = TLSessionFactory.getSession();
    return session;
    // method of TLTransactionManager, provides easy access to TLSession
    // which handles Toplink Sessions and is a singleton
    public static UnitOfWork getActiveTransaction(String userId)
    throws DataAccessException
    TLSession tls = TLSession.getInstance();
    return tls.getTransaction(userId);
    // the TLSession method, returns the active transaction (UOW)
    // or null if none
    public UnitOfWork getTransaction(String uid) {
    UnitOfWork uow = null;
    UowWrapper uw = (UowWrapper)mTransactions.get(uid);
    if (uw != null) {
    uow = uw.getUow();
    return uow;
    Thanks!
    -Tim

  • JPA error with nested exception for more details

    Hi All,
    A strange thing is that when i can deploy javaee app successfully. But some time, it is failed and i have to wait for 10, 15 minutes then i can deploy again. When i got error, below is the error message:
    I don't know if you can find a hint.
    INFO: EclipseLink, version: Eclipse Persistence Services - 2.3.2.v20111125-r10461
    SEVERE: Local Exception Stack:
    Exception [EclipseLink-4019] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Exception Description: Error while obtaining information about the database. Refer to the nested exception for more details.
                    at org.eclipse.persistence.exceptions.DatabaseException.errorRetrieveDbMetadataThroughJDBCConnection(DatabaseException.java:361)
                    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:602)
                    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:206)
                    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:488)
                    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
                    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
                    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:294)
                    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:272)
                    at org.glassfish.persistence.jpa.PersistenceUnitLoader.loadPU(PersistenceUnitLoader.java:211)
                    at org.glassfish.persistence.jpa.PersistenceUnitLoader.<init>(PersistenceUnitLoader.java:120)
                    at org.glassfish.persistence.jpa.JPADeployer$1.visitPUD(JPADeployer.java:224)
                    at org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUDs(JPADeployer.java:495)
                    at org.glassfish.persistence.jpa.JPADeployer.createEMFs(JPADeployer.java:233)
                    at org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:168)
                    at com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:871)
                    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:410)
                    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
                    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:389)
                    at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348)
                    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363)
                    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1085)
                    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)
                    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291)
                    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259)
                    at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:461)
                    at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:212)
                    at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:179)
                    at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
                    at com.sun.enterprise.v3.services.impl.ContainerMapper$Hk2DispatcherCallable.call(ContainerMapper.java:354)
                    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
                    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849)
                    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746)
                    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045)
                    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228)
                    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
                    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
                    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
                    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
                    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
                    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
                    at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
                    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
                    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
                    at java.lang.Thread.run(Thread.java:619)
    Caused by: java.sql.SQLRecoverableException: Closed Connection
                    at oracle.jdbc.driver.PhysicalConnection.getMetaData(PhysicalConnection.java:4508)
                    at com.sun.gjc.spi.base.ConnectionHolder.getMetaData(ConnectionHolder.java:345)
                    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:589)
                    ... 42 more
    SEVERE: Exception while invoking class org.glassfish.persistence.jpa.JPADeployer prepare method
    SEVERE: Exception while preparing the app
    SEVERE: Exception [EclipseLink-4019] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Exception Description: Error while obtaining information about the database. Refer to the nested exception for more details.
    javax.persistence.PersistenceException: Exception [EclipseLink-4019] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Exception Description: Error while obtaining information about the database. Refer to the nested exception for more details.
                    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:517)
                    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
                    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
                    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:294)
                    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:272)
                    at org.glassfish.persistence.jpa.PersistenceUnitLoader.loadPU(PersistenceUnitLoader.java:211)
                    at org.glassfish.persistence.jpa.PersistenceUnitLoader.<init>(PersistenceUnitLoader.java:120)
                    at org.glassfish.persistence.jpa.JPADeployer$1.visitPUD(JPADeployer.java:224)
                    at org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUDs(JPADeployer.java:495)
                    at org.glassfish.persistence.jpa.JPADeployer.createEMFs(JPADeployer.java:233)
                    at org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:168)
                    at com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:871)
                    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:410)
                    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
                    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:389)
                    at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348)
                    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363)
                    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1085)
                    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)
                    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291)
                    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259)
                    at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:461)
                    at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:212)
                    at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:179)
                    at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
                    at com.sun.enterprise.v3.services.impl.ContainerMapper$Hk2DispatcherCallable.call(ContainerMapper.java:354)
                    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
                    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849)
                    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746)
                    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045)
                    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228)
                    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
                    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
                    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
                    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
                    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
                    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
                    at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
                    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
                    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
                    at java.lang.Thread.run(Thread.java:619)
    Caused by: Exception [EclipseLink-4019] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Exception Description: Error while obtaining information about the database. Refer to the nested exception for more details.
                    at org.eclipse.persistence.exceptions.DatabaseException.errorRetrieveDbMetadataThroughJDBCConnection(DatabaseException.java:361)
                    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:602)
                    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:206)
                    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:488)
                    ... 40 more
    Caused by: java.sql.SQLRecoverableException: Closed Connection
                    at oracle.jdbc.driver.PhysicalConnection.getMetaData(PhysicalConnection.java:4508)
                    at com.sun.gjc.spi.base.ConnectionHolder.getMetaData(ConnectionHolder.java:345)
                    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:589)
                    ... 42 more
    SEVERE: Exception while preparing the app : Exception [EclipseLink-4019] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Exception Description: Error while obtaining information about the database. Refer to the nested exception for more details.
    Local Exception Stack:
    Exception [EclipseLink-4019] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Exception Description: Error while obtaining information about the database. Refer to the nested exception for more details.
                    at org.eclipse.persistence.exceptions.DatabaseException.errorRetrieveDbMetadataThroughJDBCConnection(DatabaseException.java:361)
                    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:602)
                    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:206)
                    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:488)
                    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
                    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
                    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:294)
                    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:272)
                    at org.glassfish.persistence.jpa.PersistenceUnitLoader.loadPU(PersistenceUnitLoader.java:211)
                    at org.glassfish.persistence.jpa.PersistenceUnitLoader.<init>(PersistenceUnitLoader.java:120)
                    at org.glassfish.persistence.jpa.JPADeployer$1.visitPUD(JPADeployer.java:224)
                    at org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUDs(JPADeployer.java:495)
                    at org.glassfish.persistence.jpa.JPADeployer.createEMFs(JPADeployer.java:233)
                    at org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:168)
                    at com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:871)
                    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:410)
                    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
                    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:389)
                    at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348)
                    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363)
                    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1085)
                    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)
                    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291)
                    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259)
                    at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:461)
                    at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:212)
                    at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:179)
                    at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
                    at com.sun.enterprise.v3.services.impl.ContainerMapper$Hk2DispatcherCallable.call(ContainerMapper.java:354)
                    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
                    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849)
                    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746)
                    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045)
                    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228)
                    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
                    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
                    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
                    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
                    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
                    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
                    at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
                    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
                    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
                    at java.lang.Thread.run(Thread.java:619)
    Caused by: java.sql.SQLRecoverableException: Closed Connection
                    at oracle.jdbc.driver.PhysicalConnection.getMetaData(PhysicalConnection.java:4508)
                    at com.sun.gjc.spi.base.ConnectionHolder.getMetaData(ConnectionHolder.java:345)
                    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:589)
                    ... 42 morethanks,
    -Hoang Long

    r035198x wrote:
    Yep, the appserver got hold of a usable connection but the connection was closed before the appserver had finished/committed with it. It could be that the connection was closed by the database or some firewall timeout setting.
    A good start is to investigate options of configuring your appserver's connection eviction policies including forcing a validation SQL to be executed when a connection is acquired. Make sure that such a query doesn't impact on performance and have some performance and integration testing before rolling out.i found that if i close the computer which causes this issue, hence other dev computers can deploy normally.
    "deploy" here i mean deploy to a running instance on each dev's machine.
    From this, i would guess the common database server itself rejects connection from clients.
    I will try to investigate more if i am missing something.
    And here i found a link that possibly a first good attempt:
    [http://www.eclipse.org/forums/index.php/m/505809/]
    EclipseLink automatically recovers from communication failures, but there is little we can do to diagnose the failure. We basically execute a query and have to wait for the JDBC driver, or DataSource's response, if it hangs for 10minutes, then we are waiting. You could set the JDBC timeout hint on your query, but whether the JDBC driver honors this is up to the driver. You should see the SQLException in your logs, provided your log level is warning or lower.
    If you cannot fix your firewall, they you could change your connection pool settings to use a min number of connections of 0, so there will never be idle connections. But then you will be reconnecting a lot.
    You could also use a third party connection pool or DataSource that supports a timeout setting on the pooled connections, or spawn a thread in your application the clears the connection pool every 30minutes.regards,
    -HL

  • Using nested query to avoid repeated object traversal

    Hi everyone,
    My SQL is still very basic, hopefully this is not a dumb question ;-)
    I have a table with a single spatial column of type SDO_GEOMETRY:
    SQL> desc WITHIN_POINT_DISTANCE_TAB
    Name                                            Null?    Type
    POINT                                                    MDSYS.SDO_GEOMETRYin which I store only single point geometries. I discovered that using the min/max SQL operators to get the combined extend of my points is faster than using SDO_TUNE.EXTEND_OF:
    SQL> select min(e.point.sdo_point.x) min_x, max(e.point.sdo_point.x) max_x, min(e.point.sdo_point.y) min_y, max(e.point.
    sdo_point.y) max_y from WITHIN_POINT_DISTANCE_TAB e;
         MIN_X      MAX_X      MIN_Y      MAX_Y
    -44.700001 737.400024 -23.870001 1094.83008
    Elapsed: 00:00:00.01but it bothers me a bit to repeat e.point.sdo_point 4 times in the above (what can I say, I'm a developer ;-) So I thought I could use a nested query to select all the SDO_POINT_TYPE sdo_point's and refer it using a p alias, and be able to simplify the query to:
    SQL> select min(p.x), min(p.y), max(p.x), max(p.y) from (select t.point.sdo_point from WITHIN_POINT_DISTANCE_TAB t) p;
    select min(p.x), min(p.y), max(p.x), max(p.y) from (select t.point.sdo_point from WITHIN_POINT_DISTANCE_TAB t) p
    ERROR at line 1:
    ORA-00904: "P"."Y": invalid identifierBut obviously this is incorrect, yet I'd like to understand what I'm missing here.
    I posited that maybe the sub-query can't return an object member and needs to return a column, but that doesn't appear to be the case:
    SQL> select min(p.sdo_point.x), min(p.sdo_point.y), max(p.sdo_point.x), max(p.sdo_point.y) from (select t.point from WIT
    HIN_POINT_DISTANCE_TAB t) p;
    select min(p.sdo_point.x), min(p.sdo_point.y), max(p.sdo_point.x), max(p.sdo_point.y) from (select t.point from WITHIN_P
    OINT_DISTANCE_TAB t) p
    ERROR at line 1:
    ORA-00904: "P"."SDO_POINT"."Y": invalid identifierCan someone please explain why the nested query approach fails as written above?
    More generally, is it a bad idea to go for a nested query just for syntactic reasons? Are there performance implications going the nested query route above? (I actually wanted to see the perf. implications experimentally, but since it fails I can't...)
    Any insight would be appreciated. Thanks, --DD                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

    Thank you Peter. I now understand that I need to alias the column in addition to the table (the latter only because I traverse objects which require table aliases).
    SQL> select min(t.p.x), min(t.p.y), max(t.p.x), max(t.p.y) from
      2  (select nt.point.sdo_point p from WITHIN_POINT_DISTANCE_TAB nt) t;
    MIN(T.P.X) MIN(T.P.Y) MAX(T.P.X) MAX(T.P.Y)
    -44.700001 -23.870001 737.400024 1094.83008
    Elapsed: 00:00:00.01Performance-wise it looks similar, but I need to test on a bigger table because it's too fast with 10K points to show differences. Overall it doesn't look that using the nested query syntax makes the query more readable once all pieces to make it work are there.
    Thanks again, --DD
    PS: Just aliasing the column and not the outer table fails:
    SQL> select min(p.x), min(p.y), max(p.x), max(p.y) from (select nt.point.sdo_point p from WITHIN_POINT_DISTANCE_TAB nt);
    select min(p.x), min(p.y), max(p.x), max(p.y) from (select nt.point.sdo_point p from WITHIN_POINT_DISTANCE_TAB nt)
    ERROR at line 1:
    ORA-00904: "P"."Y": invalid identifier

  • Nested query in BPEL JDeveloper

    Hi,
    Can anyone help me with nested query writing in BPEL (JDeveloper)
    the query is :
    SELECT LENGTH, WIDTH, HEIGHT, WEIGHT,
    LENGTH*WIDTH* HEIGHT AS ITEM_CUBE
    FROM ITEM_SUPP_COUNTRY_DIM
    WHERE ITEM= &lt;Level1 item&gt;
    AND DIM_OBJECT= (SELECT CASE_NAME FROM ITEM_SUPPLIER WHERE ITEM=&lt;Item&gt; AND PRIMARY_SUPP_IND = &lsquo;Y')
    Please help me with the steps.
    Many thanks

    Hi,
    For the following query:
    SELECT S.STORE, S.STORE_NAME, A.ADD_1, A.ADD_2, A.ADD_3, A.CITY,A.STATE, A.POST, A.COUNTRY_ID, A.CONTACT_PHONE, A.CONTACT_NAME,S.STORE_OPEN_DATE, S.STORE_CLOSE_DATE, S.REMODEL_DATE, S.TRANSFER_ZONE,S.DISTRICT,S.STORE_TYPE
    FROM STORE S, ADDR A
    WHERE S.STORE= #store
    AND to_char(S.STORE) = #keyValue1
    AND A.MODULE = #module
    AND A.ADDR_TYPE = #type
    AND A.PRIMARY_ADDR_IND=#addrType
    the DB adapter shows this xml:
    &lt;?xml version = '1.0' encoding = 'UTF-8'?&gt;
    &lt;xs:schema targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/db/WMSStoreDataLookUp" xmlns="http://xmlns.oracle.com/pcbpel/adapter/db/WMSStoreDataLookUp" elementFormDefault="qualified" attributeFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt;
    &lt;xs:element name="WMSStoreDataLookUpInput" type="WMSStoreDataLookUpInput"/&gt;
    &lt;xs:complexType name="WMSStoreDataLookUpInput"&gt;
    &lt;xs:sequence&gt;
    &lt;xs:element name="store" type="/&gt;<br /><br /> &lt;xs:element name="keyValue1" type="/&gt;
    &lt;xs:element name="module" type="/&gt;<br /><br /> &lt;xs:element name="type" type="/&gt;
    &lt;xs:element name="addrType" type="/&gt;<br /><br /> &lt;/xs:sequence&gt;<br /><br />&lt;/xs:complexType&gt;<br /><br />&lt;xs:element name="WMSStoreDataLookUpOutputCollection" type="WMSStoreDataLookUpOutputCollection" nillable="true"/&gt;<br /><br />&lt;xs:complexType name="WMSStoreDataLookUpOutputCollection"&gt;<br /><br />&lt;xs:sequence&gt;<br /><br />&lt;xs:element name="WMSStoreDataLookUpOutput" type="WMSStoreDataLookUpOutput" minOccurs="0" maxOccurs="unbounded"/&gt;<br /><br />&lt;/xs:sequence&gt;<br /><br />&lt;/xs:complexType&gt;<br /><br />&lt;xs:complexType name="WMSStoreDataLookUpOutput"&gt;<br /><br />&lt;xs:sequence&gt;<br /><br />&lt;xs:element name="S_STORE" type="xs:decimal" nillable="true"/&gt;<br /><br />&lt;xs:element name="S_STORE_NAME" type="xs:string" nillable="true"/&gt;<br /><br />&lt;xs:element name="A_ADD_1" type="xs:string" nillable="true"/&gt;<br /><br />&lt;xs:element name="A_ADD_2" type="xs:string" nillable="true"/&gt;<br /><br />&lt;xs:element name="A_ADD_3" type="xs:string" nillable="true"/&gt;<br /><br />&lt;xs:element name="A_CITY" type="xs:string" nillable="true"/&gt;<br /><br />&lt;xs:element name="A_STATE" type="xs:string" nillable="true"/&gt;<br /><br />&lt;xs:element name="A_POST" type="xs:string" nillable="true"/&gt;<br /><br />&lt;xs:element name="A_COUNTRY_ID" type="xs:string" nillable="true"/&gt;<br /><br />&lt;xs:element name="A_CONTACT_PHONE" type="xs:string" nillable="true"/&gt;<br /><br />&lt;xs:element name="A_CONTACT_NAME" type="xs:string" nillable="true"/&gt;<br /><br />&lt;xs:element name="S_STORE_OPEN_DATE" type="xs:dateTime" nillable="true"/&gt;<br /><br />&lt;xs:element name="S_STORE_CLOSE_DATE" type="xs:dateTime" nillable="true"/&gt;<br /><br />&lt;xs:element name="S_REMODEL_DATE" type="xs:dateTime" nillable="true"/&gt;<br /><br />&lt;xs:element name="S_TRANSFER_ZONE" type="xs:decimal" nillable="true"/&gt;<br /><br />&lt;xs:element name="S_DISTRICT" type="xs:decimal" nillable="true"/&gt;<br /><br />&lt;xs:element name="S" type="xs:string" nillable="true"/&gt;<br /><br />&lt;xs:element name="A_PRIMARY_ADDR_IND__addrType" type="xs:string" nillable="true"/&gt;<br /><br />&lt;/xs:sequence&gt;<br /><br />&lt;/xs:complexType&gt;<br /><br />&lt;/xs:schema&gt;<br /><br /><br /><br />Please, look at the last few lines of XML and let me know if this is correct..

  • Count(*) with nested query

    Hi,
    I have a question about the count(*) with nested query.
    I have a table T1 with these columns:
    C1 number
    C2 number
    C3 number
    C4 number
    C5 number
    (The type of each column is not relevant for the example.)
    This query:
    select C1, C2, C3, C4
    from T1
    group by C1, C2
    it's not correct becausa C3 and C4 are not columns specified in the GROUP BY expression.
    If if run this query:
    select count(*)
    from (select C1, C2, C3, C4
    from T1
    group by C1, C2)
    I haven't an error message (the result is correctly the number of records).
    Why?
    Thanks.
    Best regards,
    Luca

    Because you are just selecting count(*) and none of the columns from the subquery, Oracle is optimising it by ignoring the selected columns and just running the sub query with the group by columns. I know it seems odd, but if you take a basic example:
    SQL> ed
    Wrote file afiedt.buf
      1  select count(*)
      2  from (select empno, sal, mgr, deptno
      3  from emp
      4* group by deptno)
    SQL> /
      COUNT(*)
             3... all columns but deptno are ignored
    ... but if you include one of the other columns, even if you group by that column...
    SQL> ed
    Wrote file afiedt.buf
      1  select count(*), empno
      2  from (select empno, sal, mgr, deptno
      3  from emp
      4  group by deptno)
      5* group by empno
    SQL> /
    group by empno
    ERROR at line 5:
    ORA-00979: not a GROUP BY expression
    SQL>... the error returns, because you're forcing oracle to include the column in the subquery.

  • Query for turn-over to end-users

    Hi Friends,
    I have create a query called "query1.sql" which print monthly summary report to excel/csv.
    Can I automate this query for turn-over to user/operator, so that the user will just invoke run-time program only to produce the desired output? or maybe create a menu or something to make the query run?
    Thanks a lot,
    Ms K

    Not in the current releases. You can vote for the existing requests for automation/command line at the SQL Developer Exchange, to add weight for possible future implementation.
    And yes, I suppose you could create a User Defined Java Extension to automate through a menu option or something.
    Have fun,
    Mr. K.

  • Error in making left outer join to a nested query

    i am writing this query getting error here i am using nested query with that i am making join it is giving error
    SQL
    SELECT
    * FROM IVItem INNER JOIN
    IVPackSize_Mst ON IVItem.PackSizeID = IVPackSize_Mst.Id
    left outer join IvItemGenericLink on IvItemGenericLink.itemID=IVItem.Id
    Select GenericId from
    IvItemGenericLink where ItemID=IVItem.Id and rownum <=1
    )x
    and x on IvItemGenericLink.GenericId=x.GenericId;
    Error report:
    SQL Error: ORA-00936: missing expression
    00936. 00000 - "missing expression"
    *Cause:   
    *Action:
    give me and suggestion

    i am using left outer join at virtual table say x your gave me its equivalent
    EXISTS (SELECT 1 FROM IvItemGenericLink G
    WHERE G.ITEMID =V.ID
    AND G.GenericId = L.GenericId)-----its i guess inner join
    i am not confirmed that why iam asking this i guess i have to use this
    as i use keyword inner join for inner join and for left join i use
    left outer join
    EXISTS (SELECT 1 FROM IvItemGenericLink G
    WHERE G.ITEMID =V.ID
    AND G.GenericId(+) = L.GenericId)-----its i guess left outer join
    left outer join
    Select GenericId from
    IvItemGenericLink where ItemID=IVItem.Id and rownum <=1
    )*x*
    IvItemGenericLink.GenericId=x.GenericId
    -------------------Statement U Gave in this--------------------------------------------------------------------------
    SELECT *
    FROM IVITEM V, IVPACKSIZE_MST M , IVITEMGENERICLINK L,
    WHERE V.PACKSIZEID = M.ID
    AND V.ID = L.ITEMID (+)
    AND EXISTS (SELECT 1 FROM IvItemGenericLink G
    WHERE G.ITEMID =V.ID
    AND G.GenericId = L.GenericId)
    -------------------Statement U Gave in this--------------------------------------------------------------------------
    is this equivalent to left outer join
    *AND EXISTS (
    SELECT 1 FROM IvItemGenericLink G*
    WHERE G.ITEMID =V.ID
    *AND G.GenericId = L.GenericId
    please tell me this in this regard

  • Afc:cache does not work for menu facets?

    when I place afc:cache around a facet for menu items, the menus do not show up?
    <afc:cache duration="86400">
    <f:facet name="menu1">
    <af:menuTabs>
    <af:commandMenuItem text="Find Services" selected="true" disabled="true" />
    <af:commandMenuItem text="Sign Up to Advertise Your Services"
    action="start" immediate="true"/>
    <af:commandMenuItem text="My Account" selected="false" action="myaccount" immediate="true"/>
    </af:menuTabs>
    </f:facet>
    </afc:cache>
    Thanks

    Hi,
    I found a bug entry about nested fragments not being rendered correctly. However, this doesn - by 100 % - sound like your issue. Any chance that you can file a bug on this ?
    Frank

Maybe you are looking for