Including additional where clause conditions to view criteria dynamically

Hi,
We have a set of view objects that serves as LOV for various other view objects. All such LOV view objects have three specific attributes, two date attributes namely EffectiveStartDate, EffectiveEndDate and a String attribute namely UserSwitch based on which the LOV list needs to be filtered.
All the view objects are having one or more view criterias with specific where clause conditions.
Apart from those view criteria conditions, invariantly, we need the following conditions also
:bindEffDate between EffectiveStartDate and EffectiveEndDate and UserSwitch = :bindUserSwitch.
We wish not to include the above condition in each and every view criteria of each and every view object (Since we have around 800 view objects and a minimum of 2 view criterias per view object). Instead, we created a dummy view object (BaseViewObject) with two bind variables :bindEffDate and :bindUserSwitch and all the LOV view objects were made to extend this BaseViewObject.
Therefore, whenever a view object atribute is attached with LOV using the above said LOV View Objects, the bind variables of the baseViewObject as well as the view object specific bind variables are available in the view accessors tab of the view object wizard where we can supply values to those bind variables.
Now, we need to construct the view criteria filter clause. To achieve this, we created a class, CustomCriteriaAdapter.java extending oracle.jbo.server.CriteriaAdapterImpl. In the getCriteriaClause() method, we included the follwoing code:
public String getCriteriaClause(ViewCriteria pViewCriteria)
ViewObject vo = pViewCriteria.getViewObject();
String userSelectSwitch = (String) vo.ensureVariableManager().getVariableValue("bindUserSwitch");
String effBgnDt = vo.getAttributeDef(vo.getAttributeIndexOf("EffectiveStartDate")).getName();
String effEndDt = vo.getAttributeDef(vo.getAttributeIndexOf("EffectiveEndDate")).getName();
String customCriteria = " ( :bindEffDate >= " + effBgnDt + " ) AND ( :bindEffDate <= " + effEndDt + " OR " + effEndDt + " IS NULL ) ";
StringBuffer completeCriteria = new StringBuffer();
String criteriaClause = super.getCriteriaClause(pViewCriteria);
if (criteriaClause != null && !criteriaClause.isEmpty())
completeCriteria.append(criteriaClause + " AND ");
completeCriteria.append(customCriteria);
if (userSelectSwitch != null && "Y".equals(userSelectSwitch))
String userSelectSw = vo.getAttributeDef(vo.getAttributeIndexOf("UserSwitch")).getName();
completeCriteria.append(" AND (" + userSelectSw + "='Y' ) ");
return completeCriteria.toString();
Issues:
The LOV list is not filtering the records based on the constructed conditions. Instead it is listing either all of the records considering only the view criteria conditions applied at design time irrespective of the userswitch and effectivedate conditions or the list is empty.
Here, my questions are,
1. Am I in the correct approach? If not, guide me in a more proper approach to achieve the same requirement.
2. If the way I am trying is correct, where things are going wrong and why the dynamic condition is not getting effected?
Kindly help in sorting out the issue.
Thanks in advance.

Hi Jobinesh,
Thanks for your response and yes, we have done exactly as what you have mentioned. As explained earlier, a baseViewObject along with its Impl class has been created and it will be extended by all the viewobjects meant for serving LOV. Therefore, the superClass for any such LOV viewObject is the baseViewObjectImpl class. In that baseViewObjectImpl(), we have over-rided the criteriaAdapter() method and returned an instance of our customCriteriaAdapter() class.
Below is the code we are using in the baseViewObjectImpl():
package model.base.vo;
import oracle.jbo.CriteriaAdapter;
import oracle.jbo.server.ViewObjectImpl;
public class BaseViewObjectImpl
extends ViewObjectImpl
* This is the default constructor (do not remove).
public BaseViewObjectImpl()
* Over-rided method of ViewObjectImpl class of the framework.
* Calls the customized criteria adapter so that the default where clauses are added to the view criteria.
* @return CriteriaAdapter.
@Override
public CriteriaAdapter getCriteriaAdapter()
return new CustomCriteriaAdapter();
I'll create a sample in HR schema and share with you shortly.
Thanks and regards.

Similar Messages

  • Generate a where clause with outer join criteria condition: (+)=

    Hi,
    In my search page, I use Auto Customization Criteria mode, and I build where clause by using get Criteria():
    public void initSrpQuery(Dictionary[] dic, String userName) {
    int dicSize = dic.length;
    StringBuffer whereClause = new StringBuffer(100);
    Vector parameters = new Vector(5);
    int clauseCount = 0;
    int bindCount = 1;
    for(int i=0; i < dicSize; i++){
    String itemName = (String)(dic.get(OAViewObject.CRITERIA_ITEM_NAME));
    Object value = dic[i].get(OAViewObject.CRITERIA_VALUE);
    String joinCondition = (String)dic[i].get(OAViewObject.CRITERIA_JOIN_CONDITION);
    String criteriaCondition = (String)dic[i].get(OAViewObject.CRITERIA_CONDITION);
    String criteriaDataType = (String)dic[i].get(OAViewObject.CRITERIA_DATATYPE);
    String viewAttributename = (String)dic[i].get(OAViewObject.CRITERIA_VIEW_ATTRIBUTE_NAME);
    String columnName = findAttributeDef(viewAttributename).getColumnNameForQuery();
    if((value != null) /*&& (!("".equals((String).trim())))*/){
    if(clauseCount > 0){
    whereClause.append(" AND ");
    whereClause.append(columnName + " " + criteriaCondition + " :");
    whereClause.append(++bindCount);
    parameters.addElement(value);
    clauseCount++;
    If I want to generate following where clause:
    select
    ,emp.name
    ,emp.email
    ,emp.salesrep_number
    ,comp.name
    ,gs.srp_goal_header_id
    ,gs.status_code
    ,gs.start_date
    ,gs.end_date
    from g2c_goal_shr_emp_assignments_v emp
    ,jtf_rs_salesreps rs
    ,xxg2c_srp_goal_headers_all gs
    ,cn_comp_plans_all comp
    where 1 = 1
    and rs.salesrep_id = gs.salesrep_id (+)
    and gs.comp_plan_id = comp.comp_plan_id (+)
    and gs.period_year (+) = :1 -- :1 p_fiscal_year
    How can I generate a where clause with outer join : gs.period_year (+) = :1 ? Will I get '(+)=' from get(OAViewObject.CRITERIA_CONDITION)?
    thanks
    Lei

    If you are using SQL-Plus or Reports you can use lexical parameters like:
    SELECT * FROM emp &condition;
    When you run the query it will ask for value of condition and you can enter what every you want. Here is a really fun query:
    SELECT &columns FROM &tables &condition;
    But if you are using Forms. Then you have to change the condition by SET_BLOCK_PROPERTY.
    Best of luck!

  • JSP, Data Web Bean, BC4J: Setting the where clause of a View Object at run time

    Hi,
    I am trying to develop a data web bean in which the where clause of a View Object will be set at run time and the results of the query then displayed.
    My BC4J components are located in one project while the coding for the data web bean is in another project. I used the following code bu t it does not work. Could you please let me know what I am doing wrong?
    public void populateOSTable(int P_EmpId)
    String m_whereString = "EmpView.EMP_ID = " + P_EmpId;
    String m_OrderBy = "EmpView.EMP_NAME";
    oracle.jbo.ApplicationModule appModule = null;
    ViewObject vo = appModule.findApplicationModule("EMPBC.EMPAppModule").findViewObject("EMPBC.EMPView");
    vo.setWhereClause(m_whereString);
    vo.setOrderByClause(m_OrderBy);
    vo.executeQuery();
    vo.next();
    String empName numAttrs = vo.getAttribute(EmpName);
    System.out.println(empName);
    Thanks.

    <BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by JDev Team (Laura):
    Here is how I have usually done mine:
    1. In the JSP, use a RowsetNavigator bean to set the where clause and execute the query.
    2. Use a custom web bean to process the results of the query (print to HTML).
    for example:
    <jsp:useBean class="oracle.jbo.html.databeans.RowsetNavigator" id="rsn" scope="request" >
    <%
    // get the parameter from the find form
    String p = request.getParameter("p");
    String s = request.getParameter("s");
    // store the information for reference later
    session.putValue("p", p);
    session.putValue("s", s);
    // initialize the app module and view object
    rsn.initialize(application,session, request,response,out,"wt_bc_WT_bcModule.wtjoinView");
    // set the where clause string
    String theclause = "presname = '" + p + "' AND slideno=" + s;
    // set the where clause for the VO
    rsn.getRowSet().getViewObject().setWhereClause(theclause);
    rsn.getRowSet().getViewObject().executeQuery();
    rsn.getRowSet().first();
    %>
    </jsp:useBean>
    <jsp:useBean class="wt_bc.walkthruBean" id="wtb" scope="request" >
    <%
    // initialize the app module and VO
    wtb.initialize(application,session, request,response,out,"wt_bc_WT_bcModule.wtjoinView");
    wtb.render();
    %>
    In this case, the render method of my custom web bean mostly gets some session variables, and prints various content depending on the session variable values.
    Hope this helps.
    </jsp:useBean><HR></BLOCKQUOTE>
    Laura can you give the code of your walkthru bean? i wna't to initialize a viewobject, set the where clause and give that viewobject back to initialize my navigatorbar.
    Nathalie
    null

  • Sequence of tables in from clause and sequence of "where clause" conditions

    Is Sequence of tables in "From Clause" and sequence of "where clause" conditions matters in 10g for performance?
    Edited by: user6763079 on Jun 1, 2011 3:33 AM

    user6763079 wrote:
    Is Sequence of tables in "From Clause" and sequence of "where clause" conditions matters in 10g for performance?In general it does not matter.
    It could matter if the Rule Based Optimizer (RBO) is used. However this RBO is only used if enforced by a hint or if no table statistics are collected. Starting from 10g the table statistics are automatically selected by a regular database job. So in general the CBO would be used.
    The CBO will consider different access paths. If the number of tables is low enough, then all possible combinations are considered and the order does not make any difference.
    Edited by: Sven W. on Jun 1, 2011 4:00 PM

  • How to set Where clause in the View Object of the MessageChoice ?

    Hi,
    How to set Where clause in the View Object of the
    MessageChoice ?
    Example:
    <bc4j:rootAppModuleDef name="EdEscolaCampusView1AppModule"
    definition="ed00050.Ed00050Module"
    releaseMode="stateful" >
    <bc4j:viewObjectDef name="EdEscolaCampusView1" >
    <bc4j:rowDef name="CreateEdEscolaCampusView1" autoCreate="true" >
    <bc4j:propertyKey name="key" />
    </bc4j:rowDef>
    </bc4j:viewObjectDef>
    <bc4j:viewObjectDef name="ListaTipLocalView1"
    rangeSize="9999">
    </bc4j:viewObjectDef>
    </bc4j:rootAppModuleDef>
    </bc4j:registryDef>
    messageChoice declaration:
    <bc4j:messageChoice name="SeqTipoLocalCampus"
    attrName="SeqTipoLocalCampus"
    prompt="Local do Campus">
    <contents>
    <bc4j:optionList attrName="SeqTipoBasico"
    textAttrName="NomTipoBasico"
    voName="ListaTipLocalView1"/>
    </contents>
    </bc4j:messageChoice>
    I would like set where clause of ViewObject, with dinamic parameters (using attribute1 = :1), before populate messageChoice.
    thanks...
    Danilo

    Hi Andy,
    I try set a where clause using the message:
    Set where Clause parameter using UIX , but my UIX Page have 2 messageChoice's of different ViewObject's, then I need implement this Java Class:
    //Nome da Package da Tela Detail
    package br.com.siadem.siaed.ed00050;
    // Importa as Bibliotecas necessárias
    import oracle.jbo.ViewObject;
    import oracle.jbo.ApplicationModule;
    import oracle.jbo.client.Configuration;
    import oracle.cabo.servlet.BajaContext;
    import oracle.cabo.servlet.Page;
    import oracle.cabo.servlet.event.PageEvent;
    import oracle.cabo.servlet.event.EventResult;
    import oracle.cabo.data.jbo.servlet.bind.*;
    import oracle.cabo.ui.data.BoundValue;
    import oracle.cabo.ui.data.DataBoundValue;
    import javax.servlet.http.HttpServletRequest;
    import br.com.siadem.siaed.util.*;
    import javax.servlet.http.Cookie;
    import oracle.cabo.data.jbo.def.NestedAppModuleDef;
    import oracle.cabo.data.jbo.def.ViewObjectDef;
    import oracle.cabo.data.jbo.def.AppModuleDef;
    // Classe que configura os parametros para a execução da Query,
    // utilizando variáveis de Sessao
    public class FunPreQueryLista
    public static EventResult FunConfiguraQuery(BajaContext context, Page page, PageEvent event) throws Throwable
    // TrataDadosSessao - Classe utilizada para retornar os valores das variáveis de sessão genéricas
    // Ex: CodCliente, CodMunicipio etc...
    TrataDadosSessao varDadosSessao = new TrataDadosSessao();
    // 1o. Parametro Configurado - Através da classe TrataDadosSessao, utilizando um método Get
    // <alterar>
    String valor1 = varDadosSessao.getCodCliente();
    String valor2 = varDadosSessao.getCodMunicipio();
    //Cria o objeto que retorna o ApplicationModule
    ApplicationModule am = ServletBindingUtils.getApplicationModule(context);
    // Início das Configurações da Query da Lista
    //Cria o objeto que retorna o view object da lista desejada
    //alterar
    ViewObject TipoLocal = am.findViewObject("ListaTipoLocalView1");
    //Configuração dos parametros definidos na query do view Object
    //alterar
    TipoLocal.setWhereClauseParam(0,valor1);
    TipoLocal.setWhereClauseParam(1,valor2);
    // Executa a Query
    TipoLocal.executeQuery();
    // Fim das Configurações da Query da Lista
    // Início das Configurações da Query da Lista
    //Cria o objeto que retorna o view object da lista desejada
    //alterar
    ViewObject TipoDestLixo = am.findViewObject("ListaDestinoLixoView1");
    //Configuração dos parametros definidos na query do view Object
    //alterar
    TipoDestLixo.setWhereClauseParam(0,valor1);
    TipoDestLixo.setWhereClauseParam(1,valor2);
    // Executa a Query
    TipoDestLixo.executeQuery();
    // Fim das Configurações da Query da Lista
    // Retorna o Resultado para a Página
    return new EventResult(page);
    The code works very well...
    And, I'm sorry for my two repost's in UIX Forum about this in a few time.
    Thank very much...
    Danilo

  • Define a Standalone Download Integrator with an Additional Where clause - SQL error

    Hi,
    I am trying to create a standalone integrator with an Additional Where clause. Followed the steps mentioned in the metalink note 360105.1. When I run the integrator, I get the following error message.
    Please resolve the following error to continue.
    SQL error: ORA-00936: missing expression occurred
    processing stored SQL for Content 20007:GENERAL_441_CNT.
    When I look at the log file, here is what I can see:
    10/22/14 10:50 AM AJPRequestHandler-HTTPThreadGroup-15 TRACE          BneHrSQLControl - SQL:SELECT  FROM PER_PEOPLE_V where last_name=$PARAM$.last_name
    10/22/14 10:50 AM AJPRequestHandler-HTTPThreadGroup-15 TRACE          validateSQLStatement value of sqlStatement is: SELECT  FROM PER_PEOPLE_V where last_name=:RSQLP1
    10/22/14 10:50 AM AJPRequestHandler-HTTPThreadGroup-15 DETAIL         BneHrSQLControl.validateSQLStatement() paramName: last_name
    10/22/14 10:50 AM AJPRequestHandler-HTTPThreadGroup-15 DETAIL         BneHrSQLControl.validateSQLStatement() error in SQL: java.sql.SQLSyntaxErrorException: ORA-00936: missing expression
    So, clearly, the SQL statement that is getting built internally is wrong. Ideally, I would expect the statement to be something like this:
    SELECT *  FROM PER_PEOPLE_V where last_name=$PARAM$.last_name.
    RDBMS : 11.2.0.3.0
    Oracle Applications : 12.1.3
    Any pointers towards the resolution of the issue would be of great help.
    Thanks in Advance!
    Lalitha.

    This is a duplicate post of your other question:  create trigger automatic
    DO NOT start duplicate threads for the same question.
    Locking this thread

  • In which order does the query's where clause condition is checked

    Hi All,
    can anyone tell me in which order does oracle evaluate the where clause condition?
    for ex: select * from users where user_type='Admin' and stauts='Enabled'

    user9981103 wrote:
    The conditions in the WHERE clause are checked in the reverse order of the given order.
    i.e; first it will check stauts='Enabled'* and then user_type='Admin'* for your given queryWhy do you believe that?
    If there is a sufficiently selective b-tree index on USER_TYPE, the optimizer would undoubtedly use that index to process the USER_TYPE = 'Admin' condition and then check the STATUS column.
    If there is a sufficiently selective b-tree index on STATUS, the optimizer would undoubtedly use that index to process the STATUS='Enabled' condition and then check the USER_TYPE column.
    If there is a composite b-tree index on (STATUS, USER_TYPE), the optimizer would use that index to process the two conditions nearly simultaneously, though technically the leading column of the index is evaluated first. Of course, if you reverse the order of columns in the index, you get a different evaluation order
    If there are bitmap indexes on STATUS and USER_TYPE, Oracle can combine the two indexes and evaluate the two conditions simultaneously.
    And that is leaving out tons of query plan options and other optimizer wrinkles.
    Justin

  • Where clause - parentheses versus view link

    I have detail View Object DetailVO with where clause "status=1 or status=2" and I add it to AM as detail of masterVO.
    Then the link doesn't work, I suppose BC4J create new where clause as "status=1 or status=2 and :1=....". But it means "status=1 or (status=2 and :1=....)"!!!
    I put detail VO where clause into parentheses "(status=1 or status=2)" and everything was OK - ViewLink worked.
    It is very bad feature of ViewLinks, isn't it?
    Jan

    Well, now I know I must always surround OR clauses with parenthesis.
    But I was very confused about it. My ViewLink didn't work and I did't know why... I think, that if BC4J adds ViewLink condition, that it must handle the ViewObject whereClause and surround it with parenthesis. Otherwise it is very strange behaviour, isn't it? Added ViewLink condition shouldn't affect the original whereClause!
    Any JDevTeam comment?
    Jan

  • Where clause condition

    How many conditions can will be applied in where clause and what is the maximum length for where condition?

    eda58bb6-6d5c-460a-9684-4302e17fa5c7 wrote:
    Thanks someoneElse for swift response. In this link it is not their.. WHERE CLAUSE Maximum length and maximum conditions.
    unwilling or incapable to use GOOGLE yourself?
    Ask Tom &amp;quot;maximum length of sql statement&amp;quot;
    BTW - there is no separate & distinct limit for the WHERE clause
    unless you what to consider below
    Subqueries
    Maximum levels of subqueries in a SQL statement
    Unlimited in the FROM clause of the top-level query255 subqueries in the WHERE clause"

  • Additional where-clause for LOV in 9i needs table-alias

    We have upgraded from 6.0 to 9i. All our Forms had been generated for 100% using Headstart. Now we try to generate them all again and encounter a problem with the list of values. It appears that the Additional restriction in the List of Values Properties always needs the table-alias to work properly when references are made to an item in the form.
    For example:
    We have item ORG_CODE in block ORG and have a lov showing all others organisations. The default-where coded in 6.0 looked like this:
    org_code <> :org.org_code
    In 6.0 this worked perfectly. However, in 9i the where-clause is being translated into
    :org.org_code <> :org.org_code
    Offcourse the lov now always gives the message that it contains no entries!
    We have found a solution for this problem - rewrite the where-clause to
    lov_alias.org_code <> :org.org_code
    However, this solution means that we have to check tens, hundreds of lov's, because we never used to put an alias in the where-clause.
    Because of this problem 95% of our Forms can not be generated anymore.
    Anyone has a easy solution for this problem?

    I mean:
    select * from T-A, T-B
    where T-A.id = T-B.id (+)
    and T-B.number (+) = 570
    to get the null record you'll have to do:
    select * from T-A, T-B
    where T-A.id = T-B.id (+)
    and nvl(T-B.number,0) (+) not in (0,570)
    or
    select * from T-A, T-B
    where T-A.id = T-B.id (+)
    and (T-B.number (+) <> 570
    or T-B.number (+) is null)
    hope that works (untested)
    null

  • Need Help on where clause condition

    Hello All,
    Thanks in advance::
    I have below SQL query which is returning 1500 records when i dont use any condition in where clause(Please see the query below);
    SELECT POS_TYPE,
    POS_ID,
    SUB_ACNT_ID,
    CHRG,
    DOC,
    NULL,
    ACNT_RLN,
    ACCOUNT_FLODERS_VER,
    DM_LSTUPDDT,
    DM_BTNUMBER,
    DM_USERID,
    DM_WSID,
    STAT_FLG,
    SERVICES_FLG,
    SERVICES,
    INTRST_COND,
    PST_INSTRN
    FROM &&SRC.ACCOUNT_FOLDERS,
    &&SRC.DB;
    Output: 15 rows retured
    And when i validate the data by putting some conditions in where clause , it is giving 1499 records ( Please see the query below with condition )
    SELECT POS_TYPE,
    POS_ID,
    SUB_ACNT_ID,
    CHRG,
    DOC,
    NULL,
    ACNT_RLN,
    ACCOUNT_FLODERS_VER,
    DM_LSTUPDDT,
    DM_BTNUMBER,
    DM_USERID,
    DM_WSID,
    STAT_FLG,
    SERVICES_FLG,
    SERVICES,
    INTRST_COND,
    PST_INSTRN
    FROM &&SRC.ACCOUNT_FOLDERS,
    &&SRC.DB
    WHERE (POS_TYPE,
    POS_ID,
    SUB_ACNT_ID) IN (SELECT POS_TYPE,
    POS_ID,
    SUB_ACNT_ID FROM ACCOUNT
    WHERE DM_LSTUPDDT > 1_LAST_RUN_DATE OR 1_FIRST_RUN_FLAG=1);
    Now, I wanted to know that missing record(1st SQL is giving 1500 rows without any condition & 1nd SQL is giving 1499 rows with condition in where clause)
    I am worried and confused to find out the missing record. Tried with different conditions like Not In... nothing worked perfectly.
    Could some one please have a look and provide me the correct SQL , Performance wise also it should be good, SQL should not cause any performance issues.
    Please help me on it..
    Thanks,
    MKR

    Do a minus
    SELECT POS_TYPE,
           POS_ID,
           SUB_ACNT_ID,
           CHRG,
           DOC,
           NULL,
           ACNT_RLN,
           ACCOUNT_FLODERS_VER,
           DM_LSTUPDDT,
           DM_BTNUMBER,
           DM_USERID,
           DM_WSID,
           STAT_FLG,
           SERVICES_FLG,
           SERVICES,
           INTRST_COND,
           PST_INSTRN
      FROM &&SRC.ACCOUNT_FOLDERS, &&SRC.DB;
    MINUS
    SELECT POS_TYPE,
           POS_ID,
           SUB_ACNT_ID,
           CHRG,
           DOC,
           NULL,
           ACNT_RLN,
           ACCOUNT_FLODERS_VER,
           DM_LSTUPDDT,
           DM_BTNUMBER,
           DM_USERID,
           DM_WSID,
           STAT_FLG,
           SERVICES_FLG,
           SERVICES,
           INTRST_COND,
           PST_INSTRN
      FROM &&SRC.ACCOUNT_FOLDERS, &&SRC.DB
    WHERE (POS_TYPE, POS_ID, SUB_ACNT_ID) IN (SELECT POS_TYPE, POS_ID, SUB_ACNT_ID
                                                 FROM ACCOUNT
                                                WHERE DM_LSTUPDDT > 1_LAST_RUN_DATE
                                                   OR  1_FIRST_RUN_FLAG = 1);  G.

  • How to reverse where clause condition? please

    Hello Good Morning,
    i have below query which is working fine,
    update t
    set skipjet='Yes'
    from  mytable t join mychildtable C on t.ssn=c.ssn
    where
    t.ChannelCd ='OB Calls' AND t.PlanBlance BETWEEN c.MinSalary  AND  c.MaxSalary
    but my problem here is, i have to set skipjet='Y' when the above where clause not met (like opposite way)
    Please advise?
    Thank you in Advance
    Asita

    Dear Milano, 
    I did an example and i got the result that you needed.
    declare @mytable table (ssn int,ChannelCd varchar(50),PlanBlance money,skipjet varchar(3))
    declare @mychildtable table (ssn int,MinSalary money,MaxSalary money)
    insert into @mytable(ssn,ChannelCd,PlanBlance,skipjet) values (1,'OB Calls',800.00,'NO')
    insert into @mytable(ssn,ChannelCd,PlanBlance,skipjet) values (1,'OB Calls2',800.00,'NO')
    insert into @mychildtable(ssn,MinSalary,MaxSalary)values(1,600.00,800.00)
    update t set skipjet='Yes'
    from
    @mytable t
    where
    not exists (
    Select * from
    @mychildtable C
    where
    t.ssn=c.ssn and
    t.ChannelCd ='OB Calls' AND
    t.PlanBlance BETWEEN c.MinSalary AND c.MaxSalary
    Select * from @mytable
    Result:
    ssn         ChannelCd                                      PlanBlance           skipjet
    1           OB Calls                                           800,00                NO
    1           OB Calls2                                         800,00                Yes
    (2 row(s) affected)
    Ricardo Lacerda
    Don't forget to mark helpful posts, and answers. It helps others to find relevant posts to the same question.

  • Applying view criteria dynamically

    Hi,
    its urgent...... please guide me....
    in my application I want to execute the viewobject once using database than it should store in cache memory and after applying view criteria it should filter the data and give from the memory after clearing it it should return all the records from the cache memory no need to go database...
    I have used the following code......
    public void getViewdata()
                   ApplicationModule am = Configuration.createRootApplicationModule("model.HRAppModule", "HRAppModuleLocal");
            ViewObject viewobject = am.findViewObject("employeesVo1");
            viewobject.executeQuery();
                  System.out.println("no of records:\t" + viewobject.getRowCount());
            System.out.println("no of records:\t " + viewobject.getFetchedRowCount());
            System.out.println("no of records:\t" + viewobject.getEstimatedRowCount());
            System.out.println("Query Mode of viewobject:\t" + viewobject.getQueryMode());
            ViewCriteria Viewcriteria = null;
            Viewcriteria = viewobject.createViewCriteria();
            Viewcriteria.setCriteriaMode(Viewcriteria.CRITERIA_MODE_QUERY | Viewcriteria.CRITERIA_MODE_CACHE);
            System.out.println("Viewcriteria mode is:\t" + Viewcriteria.getCriteriaMode());
            viewobject.setQueryMode(viewobject.QUERY_MODE_SCAN_VIEW_ROWS);
            System.out.println("Query Mode of viewobject:\t" + viewobject.getQueryMode());
            Viewcriteria.setConjunction(Viewcriteria.VC_CONJ_AND);
            ViewCriteriaRow Viewcriteriarow = Viewcriteria.createViewCriteriaRow();
            ViewCriteriaRow Viewcriteriarow1 = Viewcriteria.createViewCriteriaRow();
            Viewcriteriarow.setAttribute("ManagerId", this.getMgr());
            Viewcriteriarow.setConjunction(Viewcriteriarow.VC_CONJ_AND);
            Viewcriteriarow1.setAttribute("Salary", this.getSal());
            Viewcriteriarow1.setConjunction(Viewcriteriarow.VC_CONJ_AND);
            Viewcriteria.add(Viewcriteriarow);
            Viewcriteria.add(Viewcriteriarow1);
            if (Viewcriteria.hasData())         {
                System.out.println("Query Mode of viewobject:\t" + viewobject.getQueryMode());
                viewobject.applyViewCriteria(Viewcriteria);
                viewobject.executeQuery();
                System.out.println("no of records after apply view criteria:\t" + viewobject.getRowCount());
                System.out.println("no of records after apply view criteria:\t" + viewobject.getFetchedRowCount());
                System.out.println("no of records after apply view criteria:\t" + viewobject.getEstimatedRowCount());
                System.out.println(" view criteria where clause:\t" + viewobject.getViewCriteria());
                           System.out.println("Viewcriteria mode is:\t" + Viewcriteria.getCriteriaMode());
                System.out.println("Query Mode of viewobject:\t" + viewobject.getQueryMode());
                System.out.println("Query :\t" + viewobject.getQuery());
            else
                          Viewcriteria.removeAllElements();
                viewobject.applyViewCriteria(Viewcriteria);
                System.out.println("Viewcriteria mode is:\t" + Viewcriteria.getCriteriaMode());
                 System.out.println(" view criteria where clause:\t" + viewobject.getViewCriteria());
                           System.out.println("Query :\t" + viewobject.getQuery());
                viewobject.executeQuery();
                System.out.println("no of records after apply view criteria:\t" + viewobject.getRowCount());
                System.out.println("no of records after apply new view criteria:\t" + viewobject.getFetchedRowCount());
                System.out.println("no of records after applying new view criteria:\t" + viewobject.getEstimatedRowCount());
                System.out.println("Viewcriteria mode is:\t" + Viewcriteria.getCriteriaMode());
                System.out.println("Query Mode of viewobject:\t" + viewobject.getQueryMode());
            }Edited by: user13385388 on Jan 21, 2011 6:59 AM

    Hi,
    I'm not able to get that so I have put all the things u go through it tell me the solution please its urgent...... please guide me....
    in my application I want to execute the viewobject once using database than it should store in cache memory and after applying view criteria it should filter the data and give from the memory after clearing it it should return all the records from the cache memory no need to go database...
    I have used the following code......
    backing bean code
    public class Beanclass
        private String deptid;
        private String mgrid;
        private String sal;
        public void setDeptid(String deptid)
            this.deptid = deptid;
        public String getDeptid()
            return deptid;
        public void setSal(String sal)
            this.sal = sal;
        public String getSal()
            return sal;
        public String ROView_action()
            // Add event code here...
            FacesContext facesContext = FacesContext.getCurrentInstance();
            Application app = facesContext.getApplication();
            ExpressionFactory elFactory = app.getExpressionFactory();
            ELContext elContext = facesContext.getELContext();
            ValueExpression valueExp = elFactory.createValueExpression(elContext, "#{bindings}", Object.class);
            BindingContainer bindings = (BindingContainer) valueExp.getValue(elContext);
            DCIteratorBinding iter = (DCIteratorBinding) bindings.get("EmPdetails1Iterator"); //("employeesVo1Iterator");
            ViewObject viewobject = iter.getViewObject();
            System.out.println("no of records without applying view criteria value:\t" + viewobject.getRowCount());
            System.out.println("no of records without applying view criteria value:\t " + viewobject.getFetchedRowCount());
            System.out.println("no of records without applying view criteria value:\t" + viewobject.getEstimatedRowCount());
            System.out.println("Query Mode of viewobject before applying view criteria:\t" + viewobject.getQueryMode());
            ViewCriteria Viewcriteria = null;
            Viewcriteria = viewobject.createViewCriteria();
            Viewcriteria.setCriteriaMode(Viewcriteria.CRITERIA_MODE_CACHE);
            //Viewcriteria.setCriteriaMode(Viewcriteria.CRITERIA_MODE_QUERY | Viewcriteria.CRITERIA_MODE_CACHE);
            System.out.println("Viewcriteria mode is:\t" + Viewcriteria.getCriteriaMode());
            viewobject.setQueryMode(viewobject.QUERY_MODE_SCAN_VIEW_ROWS);
            System.out.println("Query Mode of viewobject:\t" + viewobject.getQueryMode());
            Viewcriteria.setConjunction(Viewcriteria.VC_CONJ_AND);
            ViewCriteriaRow Viewcriteriarow = Viewcriteria.createViewCriteriaRow();
            ViewCriteriaRow Viewcriteriarow1 = Viewcriteria.createViewCriteriaRow();
            ViewCriteriaRow Viewcriteriarow2 = Viewcriteria.createViewCriteriaRow();
            Viewcriteriarow.setAttribute("DepartmentId", this.getDeptid());
            Viewcriteriarow.setConjunction(Viewcriteriarow.VC_CONJ_AND);
            Viewcriteriarow1.setAttribute("ManagerId", this.getMgrid());
            Viewcriteriarow1.setConjunction(Viewcriteriarow.VC_CONJ_AND);
            Viewcriteriarow2.setAttribute("Salary", this.getSal());
            Viewcriteriarow2.setConjunction(Viewcriteriarow.VC_CONJ_AND);
            Viewcriteria.add(Viewcriteriarow);
            Viewcriteria.add(Viewcriteriarow1);
            Viewcriteria.add(Viewcriteriarow2);
            viewobject.applyViewCriteria(Viewcriteria);
            viewobject.executeQuery();
            System.out.println("no of records after applying view criteria value:\t" + viewobject.getRowCount());
            System.out.println("no of records after applying view criteria value:\t" + viewobject.getFetchedRowCount());
            System.out.println("no of records after applying view criteria value:\t" + viewobject.getEstimatedRowCount());
            System.out.println("Viewcriteria mode is:\t" + Viewcriteria.getCriteriaMode());
            System.out.println("Query Mode of viewobject:\t" + viewobject.getQueryMode());
            Viewcriteria.removeAllElements();
            viewobject.applyViewCriteria(Viewcriteria);
            //  viewobject.setQueryMode(viewobject.QUERY_MODE_SCAN_DATABASE_TABLES);
            viewobject.executeQuery();
            System.out.println("no of records after removing view criteria:\t" + viewobject.getRowCount());
            System.out.println("no of records after removing view criteria:\t" + viewobject.getFetchedRowCount());
            System.out.println("no of records after removing view criteria:\t" + viewobject.getEstimatedRowCount());
            System.out.println("Viewcriteria mode is:\t" + Viewcriteria.getCriteriaMode());
            System.out.println("Query Mode of viewobject:\t" + viewobject.getQueryMode());
            return null;
    }Jspx code
    <?xml version='1.0' encoding='UTF-8'?>
    <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
              xmlns:f="http://java.sun.com/jsf/core"
              xmlns:h="http://java.sun.com/jsf/html"
              xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
      <jsp:directive.page contentType="text/html;charset=UTF-8"/>
      <f:view>
        <af:document id="d1">
          <af:messages id="m1"/>
          <af:form id="f1">
            <af:pageTemplate viewId="/oracle/templates/threeColumnTemplate.jspx"
                             id="pt1">
              <f:facet name="center">
                <af:panelGroupLayout id="pgl2" layout="vertical"
                                     inlineStyle="width:1327px;">
                  <af:table value="#{bindings.EmPdetails1.collectionModel}"
                            var="row" rows="#{bindings.EmPdetails1.rangeSize}"
                            emptyText="#{bindings.EmPdetails1.viewable ? 'No data to display.' : 'Access Denied.'}"
                            fetchSize="#{bindings.EmPdetails1.rangeSize}"
                            rowBandingInterval="0"
                            selectedRowKeys="#{bindings.EmPdetails1.collectionModel.selectedRow}"
                            selectionListener="#{bindings.EmPdetails1.collectionModel.makeCurrent}"
                            rowSelection="single" id="t1" partialTriggers="::cb1"
                            width="1290">
                    <af:column sortProperty="DepartmentId" sortable="true"
                               headerText="#{bindings.EmPdetails1.hints.DepartmentId.label}"
                               id="c5">
                      <af:outputText value="#{row.DepartmentId}" id="ot11">
                        <af:convertNumber groupingUsed="false"
                                          pattern="#{bindings.EmPdetails1.hints.DepartmentId.format}"/>
                      </af:outputText>
                    </af:column>
                    <af:column sortProperty="DepartmentName" sortable="true"
                               headerText="#{bindings.EmPdetails1.hints.DepartmentName.label}"
                               id="c10">
                      <af:outputText value="#{row.DepartmentName}" id="ot3"/>
                    </af:column>
                    <af:column sortProperty="EmployeeId" sortable="true"
                               headerText="#{bindings.EmPdetails1.hints.EmployeeId.label}"
                               id="c1">
                      <af:outputText value="#{row.EmployeeId}" id="ot9">
                        <af:convertNumber groupingUsed="false"
                                          pattern="#{bindings.EmPdetails1.hints.EmployeeId.format}"/>
                      </af:outputText>
                    </af:column>
                    <af:column sortProperty="FirstName" sortable="true"
                               headerText="#{bindings.EmPdetails1.hints.FirstName.label}"
                               id="c9">
                      <af:outputText value="#{row.FirstName}" id="ot2"/>
                    </af:column>
                    <af:column sortProperty="LastName" sortable="true"
                               headerText="#{bindings.EmPdetails1.hints.LastName.label}"
                               id="c3">
                      <af:outputText value="#{row.LastName}" id="ot12"/>
                    </af:column>
                    <af:column sortProperty="Email" sortable="true"
                               headerText="#{bindings.EmPdetails1.hints.Email.label}"
                               id="c11">
                      <af:outputText value="#{row.Email}" id="ot10"/>
                    </af:column>
                    <af:column sortProperty="PhoneNumber" sortable="true"
                               headerText="#{bindings.EmPdetails1.hints.PhoneNumber.label}"
                               id="c6">
                      <af:outputText value="#{row.PhoneNumber}" id="ot7"/>
                    </af:column>
                    <af:column sortProperty="HireDate" sortable="true"
                               headerText="#{bindings.EmPdetails1.hints.HireDate.label}"
                               id="c7">
                      <af:outputText value="#{row.HireDate}" id="ot1">
                        <af:convertDateTime pattern="#{bindings.EmPdetails1.hints.HireDate.format}"/>
                      </af:outputText>
                    </af:column>
                    <af:column sortProperty="JobId" sortable="true"
                               headerText="#{bindings.EmPdetails1.hints.JobId.label}"
                               id="c4">
                      <af:outputText value="#{row.JobId}" id="ot5"/>
                    </af:column>
                    <af:column sortProperty="Salary" sortable="true"
                               headerText="#{bindings.EmPdetails1.hints.Salary.label}"
                               id="c12">
                      <af:outputText value="#{row.Salary}" id="ot8">
                        <af:convertNumber groupingUsed="false"
                                          pattern="#{bindings.EmPdetails1.hints.Salary.format}"/>
                      </af:outputText>
                    </af:column>
                    <af:column sortProperty="CommissionPct" sortable="true"
                               headerText="#{bindings.EmPdetails1.hints.CommissionPct.label}"
                               id="c2">
                      <af:outputText value="#{row.CommissionPct}" id="ot6">
                        <af:convertNumber groupingUsed="false"
                                          pattern="#{bindings.EmPdetails1.hints.CommissionPct.format}"/>
                      </af:outputText>
                    </af:column>
                    <af:column sortProperty="ManagerId" sortable="true"
                               headerText="#{bindings.EmPdetails1.hints.ManagerId.label}"
                               id="c8">
                      <af:outputText value="#{row.ManagerId}" id="ot4">
                        <af:convertNumber groupingUsed="false"
                                          pattern="#{bindings.EmPdetails1.hints.ManagerId.format}"/>
                      </af:outputText>
                    </af:column>
                  </af:table>
                </af:panelGroupLayout>
              </f:facet>
              <f:facet name="header"/>
              <f:facet name="start">
                <af:panelGroupLayout id="pgl1" layout="vertical">
                  <af:inputText label="Department Id" id="it1"
                                value="#{Viewcriteriabackingbean.deptid}"/>
                  <af:inputText label="Salary" id="it2"
                                value="#{Viewcriteriabackingbean.sal}"/>
                  <af:commandButton text="ApplyviewcriteriaUsingIteratorBindingforROView" id="cb1"
                                    partialTriggers="t1"
                                    action="#{Viewcriteriabackingbean.ROView_action}"/>
                </af:panelGroupLayout>
              </f:facet>
              <f:facet name="branding"/>
              <f:facet name="copyright"/>
              <f:facet name="status"/>
              <f:attribute name="startColumnSize" value="200"/>
            </af:pageTemplate>
          </af:form>
        </af:document>
      </f:view>
      <!--oracle-jdev-comment:preferred-managed-bean-name:Viewcriteriabackingbean-->
    </jsp:root>output:
    its returning the filtered records based on deptid and sal after removing view criteria its not returning the all the records its returns filtered records only.
    Edited by: user13385388 on Jan 25, 2011 1:58 AM

  • WHERE clause for Materialized View

    Hi,
    We are replicating a very large table from Production. The table is approx 40Gb in size and so the DBA's are very reluctant to do a full replication as it could bring down the production server (I'm a developer so I'm going on faith this is correct).
    I have been looking for a way to limit the number of columns that I need, approx 1 weeks data is enough to begin with. The table has a column txntimestamp which I am trying to use in the WHERE
    create materialized view FWWIPTRANSACTION                                                                                                                                                
    refresh fast on demand   with rowid 
      as select * from WLOS_OWNER.WAFPROD_FWWIPTRANSACTION
    where txntimestamp > '20/06/2009 07:00:00'But I recieve the error
    ORA-12015: cannot create a fast refresh materialized view from a complex queryDoes anyone know a way around this? This is the only date field I can use and pretty much the only viable option to limit the number of rows.
    Thank You.

    Sorry for jumping ahead but if I was able to get
    create materialized view FWWIPTRANSACTION                                                                                                                                                
    refresh fast on demand   with rowid 
      as select * from [email protected]
          where txntimestamp > '20/06/2009 07:00:00';to work, does this mean every time this MV refreshes it brings across everything since that date or merely the new rows since the last refresh? If so I will need a rolling clause i.e. sysdate - 30

  • Different WHERE clause condition

    Guys,
    What the below statement denotes ?
    sd.account_type_key = act.account_type_key()
    what is mean by () ?

    Any chance of object types with member functions being involved..
    SQL>CREATE TYPE object_typ AS OBJECT (
      2    object_id         Number(4),
      3    object_name       Varchar2(128),
      4    MAP MEMBER FUNCTION get_idno RETURN NUMBER
      5    ) ;
      6  /
    Type created.
    SQL>
    SQL>CREATE TYPE BODY object_typ AS
      2    MAP MEMBER FUNCTION get_idno RETURN NUMBER IS
      3    BEGIN
      4      RETURN object_id;
      5    END;
      6  END;
      7  /
    Type body created.
    SQL>SELECT y.object.get_idno() from
      2  (
      3  select  object_typ ( object_id, object_name ) object
      4  from  dba_objects
      5  where object_id < 10
      6  ) y
      7  /
    Y.OBJECT.GET_IDNO()
                      2
                      3
                      4
                      5
                      6
                      7
                      8
                      9
    8 rows selected.

Maybe you are looking for

  • How can i run Windows on a macbook Pro

    Hello I am close to a business decission to use in future a MACBook Pro with Retsina Display For Business reasons i have to be able to run also Winodws in a Virtual machine as some company internal applications need Windows Which program would i use

  • Can a mac connect to a TV like a PC can?

    My tv has this PC mode, where you can connect your PC. But I don't have a PC, I have a Mac. Can you connect it somehow? By the way, I don't have an Apple TV, if that changes anything.

  • Can we increase the Size of InfoObject

    Dear Experts, Can you please let me know whether we can increase the size of an InfoObject.Actually Max Size of InfoObject in 60,when I have declared an InfoObject of size 60,some value is getting truncated.Do we have any solution for such an issue.

  • Will revert to old iOS bring back my music library?

    I installed the 5.1 OS on my old ipod Touch, and when itunes was done (said it restored) I lost all my apps and music and pictures. is there any way to un-format the unit and get my music back? I have sold almost all of the CD's by now, and can't reb

  • Map content server properties to custom PT properties anyone?

    Has anyone ever mapped a content item property to a plumtree property? I would like to create a customer property and be able to update the property via a dataentry template. thanks, Craig