Very Urgent: Setting dynamic where clause for Popup list VO

Hello world


It is a very urgent requirement please help as soon as possible.


I have a custom page in iSupplier. I created two supplier site, number of PO fields.

Site of beg - choice of Message and PO number - Message LOV of entry


I have a named VO under xxisupplier.oracle.apps.pos.home.poplist.server for site begging and xxisupplier.oracle.apps.pos.home.lov.server for PO number.

I have joined these two VO AM homepage.




Now the question is

1. I want to restrict these VO vendor_id-based so I'll put dynamically where clause for these two VO of in my CO


VO SITE PROVIDER QUERY


SELECT POVs.vendor_site_code site, pov.vendor_id
OF po_vendors pov, povs po_vendor_sites_all
WHERE pov.vendor_id = povs.vendor_id
AND TRUNC (povs.inactive_date) IS NULL


PO NUMBER LOV QUERY VO


SELECT DISTINCT ai.invoice_num, ai.vendor_id, ai.invoice_date, poh.segment1
AI ap_invoices_all,.
help ap_invoice_distributions_all,
po_headers_all poh,
po_distributions_all pda,
Al ap_lookup_codes
WHERE aid.po_distribution_id = pda.po_distribution_id
AND ai.invoice_id = aid.invoice_id
AND poh.po_header_id = pda.po_header_id
AND ai.invoice_type_lookup_code = al.lookup_code
AND al.lookup_type = 'INVOICE TYPE'


I am creating where cluase as below in CO



If (vendor_id1! = null)
{
System.out.println ("vendor_id:" + vendor_id1);
OAViewObjectImpl vo = (OAViewObjectImpl) am.findViewObject ("PO_LOV_VO");
if(vo!=null)
{
vo.clearCache ();
VO. Reset();
System.out.println ("inside IN. VO:" + vendor_id1);
vo.setWhereClause (null);
vo.setWhereClause ("vendor_id =: 1");
vo.setWhereClauseParams (null);
vo.setWhereClauseParam(0,vendor_id1);
vo.setOrderByClause ("invoice_date DESC");
String INVQRY = vo.getQuery ();
System.out.println ("INVQRY:" + INVQRY);
vo.executeQuery ();
VO. First();
System.out.println ("after the query appear" + vo.getRowCount ());
}

OAViewObjectImpl sitevo1 = (OAViewObjectImpl) am.findViewObject ("SUPPLIER_SITE_VO1");
if(sitevo1!=null)
{
sitevo1.clearcache ();
sitevo1. Reset();
System.out.println ("Interior site:" + vendor_id1);
sitevo1.setWhereClause (null);
sitevo1.setWhereClause ("vendor_id =: 1");
sitevo1.setWhereClauseParams (null);
sitevo1.setWhereClauseParam(0,vendor_id1);
String SITEQRY = sitevo1.getQuery ();
System.out.println ("SITEQRY:" + SITEQRY);
sitevo1. ExecuteQuery();
sitevo1. First();
System.out.println ("after the query appear" + sitevo1.getRowCount ());
}



Here he works for the purchase order number but the where cluase does not work for Supplier Site. Please help as soon as possible.


2 and also if supplier site to return multiple values then this field should show as messagechoice. If it returns a single value, then it should be the style text message
How can I achieve this.



Thank you
CSK

Try

vo.setWhereClause ("IN vendor_id (" + vendor_id_qry + ")" ");

vendor_id_qry is the query that retrieves the list of provider IDS. You don't need to put the vendor column id as whereClauseParam unless you want to have IN the clause in your query of VO and pass the list as 1,2,3 values to the parameter.

Thank you
Shree

Tags: Oracle Applications

Similar Questions

  • Need help with dynamic where clause.

    Hello world.  I'm kind of a novice with PL/SQL, so please be patient with me.  I am building a web application using Weblogic Oracle 11 g and Oracle database.

    To make a long story short, I need to generate the complex dynamic WHERE clause.  I don't know what will be the name of the column or the operator of comparison or the value will be until the moment of execution.

    I'm not 100% certain, but I think I need to use dynamic SQL statements.  Unless there is a better way to do it.

    I'm sure that using dynamic SQL opens me up to SQL injection attacks if I use simple string concatenation.  I would like to use bind variable if possible.

    In any case, it seems like trying to build a dynamic where clause does not seem to work as I want it would be...

    bv1 := 'colA = 5 and colB >= 9';
    
    query_str := 'SELECT * FROM view WHERE :bv1';
    
    OPEN CUR FOR query_str USING bv1;
    

    The code above pours out when I try to run it.

    Is there a way to build dynamic where the provisions without the use of concatenation of simple string that leaves me open to attacks by SQL injection?

    Thank you

    Hello.  I have read briefly upward on things, you suggested, but it seems a bit abstract for me since I was a novice.

    Can you give us an explanation or an example of how to use it to accomplish what I need to do?

    Do ypu really plan create a query with a WHERE clause that contains a predicate for all possible columns?

    Variable bind offer performance when the same query is executed several times with different values for bind variables.

    Select * from emp where empno =: v_empno

    After the first run Oracle will always be this query in the library cache. The next running can use the version of the cache even if the bind value is different.

    Select * from emp where empno =: v_empno;

    Select * from emp where ename =: v_ename;

    Select * from emp where sal =: v_sal;

    Each one is a DIFFERENT query. Yes - each of them uses a variable binding, but queries are different.

    So, if your username select EMPNO, an '=', and a value from the first query can be executed. But the next time that the user can select the ENAME column so that 'stored' first request may not be used given that the query does not match.

    The third time your user selects SAL so none of the first two queries can be used in the library cache. The use of bind variables gives performance during the SAME QUERY is used multiple times with DIFFERENT values for the variable binding. Oracle is not to analyze the hard query everything simply because the VALUE is different.

    So bind variables do not help you if most of the queries were completely DIFFERENT sets of predicates. And SYS_CONTEXT will not help either since that simply provides a way to define binds the values of the variables.

    Just for the simple example above, there are at least SIX possible combinations of columns that could choose your user name: empno, ename, sal, empno ename, empno & sal, ename & sal

  • DATAMOVER: Error: syntax error in where clause for PSOPRDEFN

    The VALUE of LOG C:\PSUSER_HRM.log.
    The input VALUE F:\psoprdefn.dat;
    IMPORT psoprdefn where OPRId = 'PS ';

    When I run this command after you import the .dat to my data file, I get error:
    Error: Syntax error in where clause for PSOPRDEFN

    any suggestions pls help...

    Thank you
    Aravind

    Edited by: 967641 on November 20, 2012 11:39

    Edited by: 967641 on November 20, 2012 11:40

    It may or may not be a mistake according to what you're trying to do. He is pretty sure the system to avoid duplication of entries in this table.
    You want to replace data? Remove line import authorization.
    Otherwise, you can set IGNORE_DUPS, it will ignore the duplicated lines to load.

    Nicolas.

  • dynamic where clause ofa

    Dear all,

    I have a problem in the dynamic where clause in the OPS.

    I have a VO query as below:

    SELECT desc, ccuid, containid, XXXTMP conainline

    I'll put whereclause as below:

    VO.setwhereclause ("containid '101' =" + "order by containline desc")

    so the question is request forms as below:

    SELECT desc, ccuid, containid, XXXTMP conainline

    (where containid = '101' containline desc order) -query gives question, adding the command from the inside of the caliper

    Ideally, order by clause should come outside of the Stirrup.

    so, how do I do order by clause order side where clasue or how do I remove the stand before the where clause. So I need the query as below:

    SELECT desc, ccuid, containid, XXXTMP conainline

    (where containid = '101' containline desc order)

    SELECT desc, ccuid, containid, conainline from XXXTMP where containid = '101' containline desc order

    or

    SELECT desc, ccuid, containid, XXXTMP conainline

    (where containid = '101') order by containline desc

    Thank you

    Hello

    Solution 1-

    You can use "setOrderByClause (containline desc);" so that it will get out of Where clause.

    Solution 2-

    Instead of dynamically add Whereclause, you can bind the variable as below-

    Query in VO-

    SELECT desc, ccuid, containid, conainline from XXXTMP where containid =: 1 containline desc order


    In VOImpl-

    public void initQuery (String variable)

    {

    clearCache();

    setMaxFetchSize(-1);

    setWhereClause (null);

    setWhereClauseParams (null);

    setWhereClauseParam (0, variable);

    executeQuery();

    }

    Vall of this VOImpl method, and pass the variable value. It will work according to your requirement.

    Thank you

    Kone

  • T/t with the WHERE clause using a list breaks

    Hello, all,.

    I have a project where I need to use a list as part of the WHERE clause for a t/t, and it is breaking.  I don't know what I'm doing wrong.

    For some pseudo-code, do I have a complete query of a database called 'people '.  A list of values for the t/t with the first query; the second query is my t/t:

    <cfquery name="getDIR" datasource="#request.THISDSN#">
        SELECT thisName dir FROM orgs WHERE thisID in (<cfqueryparam value="#form.org#" cfsqltype="cf_sql_varchar" list="yes" />)
    </cfquery>
    
    <cfquery name="people" database="people">
        SELECT colA, colB, colC, colD
        FROM people
        WHERE 1=1
            AND (
                div IN (<cfqueryparam value="#valueList(getDIR.dir)#" cfsqltype="varchar" list="yes" />)
                OR dir IN (<cfqueryparam value="#valueList(getDIR.dir)#" cfsqltype="varchar" list="yes" />)
                )
    </cfquery>
    
    
    

    I get the error message is "t/t syntax error: encountered" div IN \'thisValue\' ".»  Incorrect conditional expression, waiting for one of [as | null | between | in | comparison] condition. »

    Can support _not_ QoQ lists of WHERE clauses?

    V/r,

    ^_^

    SMH - so much... I just found.

    I forgot to give the lists in the second query bracket.


    (The pseudocode was manually typed, since my dev system is isolated from the internet, and I added the in my pseudo code when they were not in my original code.)

    * headdesk * headdesk * headdesk * headdesk *.

    V/r,

    ^_^

  • Interactive report dynamic where clause

    Hello!

    Is it possible that a report interactive sql source can have a where clause clause that is built dynamically?

    Marc

    Marc:

    You could empty the record-ID set in a collection of the APEX.
    Change the IR query to add a join for this collection. Something like

    select c1, c2,c3...
    from  main_tab a, apex_collections b
    where b.name='RECORD_IDS'
    and a.pk_col=b.to_number(c001)
    

    More about APEX collections can be found at
    http://download.Oracle.com/docs/CD/E14373_01/AppDev.32/e11838/advnc.htm#insertedID4

    CITY

  • Construction of a dynamic Where clause:

    Hi experts,

    In my environment real time in the java code for a statement select query they they add dynamically to the place where clause and retrieve the data using hybernet. I want to do it in PL/SQ


    (1) is it possible?

    (2) how can I do this

    (3) can provide you with the example of document or for example for this one. Please help me

    >
    In my environment real time in the java code for a statement select query they they add dynamically to the place where clause and retrieve the data using hybernet. I want to do it in PL/SQ

    (1) is it possible?
    >
    Non - Oracle can not recover the data using hybernet.
    >
    (2) how can I do this
    >
    You can't - see response to #1 above
    >
    (3) can provide you with the example of document or for example for this one. Please help me
    >
    Not until give you an example of a document or an example of what you speak again.

  • left outer join and the where clause for the table to the right

    I want to join two tables a and b, where a is a must and b is a result set in option. When I use a left outer join to a to b, I want to achieve:

    1. Select a single column, two columns of b (not the join columns)
    2 - even if theres no friendly on the join column does not return data from one.
    3. If there is a match applies when the criteria on column b (table in option)

    so, how can I avoid no_data_found in this case? When I apply where criteria for b, so it does not return the data from one, which is a must.

    Sounds like a regular outer join to me...

    select a.col1, b.col2, b.col2
    from   tableA a
           left outer join tableB b
           on (a.id = b.id and b.colX = 'X')
    
  • Dynamic where clause in SP

    Hi experts,

    I use Oracle Database 10 g Enterprise Edition Release 10.2.0.3.0 - 64 bit

    I have to write a MS which has dynamic where clouse this where to accept the form of the value of the parameter.

    This is my SP and Eroor.
    CREATE OR REPLACE
    PACKAGE PKG_EW_PROJection_QUERY AS
    
      PROCEDURE PR_PROJECTION_QUERY(PD_AS_OF_DATE IN DATE,
                                   PV_MEMBER_CODE IN VARCHAR2,
                                   PV_TYPE_LIST   IN VARCHAR2,    -- here i have different input paramater and depending on this my where where clouse will be change 
                                                                                   -- so my input string look like('abd,cfd,fgh') if it abd then my where condition different and if cfd
                                                                                    -- then  where condition different.
                                   CUR_PROJECTION_OUT  OUT      SYS_REFCURSOR);
                                   
                                   
    END PKG_EW_PROJection_QUERY;
    
    /
    
    CREATE OR REPLACE
    PACKAGE BODY PKG_EW_PROJection_QUERY AS
    
      PROCEDURE PR_PROJECTION_QUERY(PD_AS_OF_DATE IN DATE,
                                   PV_MEMBER_CODE IN VARCHAR2,
                                   PV_TYPE_LIST   IN VARCHAR2,
                                   CUR_PROJECTION_OUT  OUT      SYS_REFCURSOR)
                                   IS
               sql_stmt varchar2(1000);
    BEGIN 
             IF PV_TYPE_LIST LIKE '%GRA-PRINCIPAL%' THEN
    
          SQL_STMT := 'SELECT P.FIC_MIS_DATE, P.V_MEMBER_CODE, P.V_TXN_DESC, P.N_AMOUNT_LCY FROM FCT_PROJECTIONS P, DIM_TXN_DESC D';
          SQL_STMT := SQL_STMT ||' WHERE P.N_RESOURCE_GROUP_NBR=D.N_RESOURCE_NBR AND P.V_TXN_CODE=D.V_TXN_CODE';
          SQL_STMT := SQL_STMT ||' AND P.FIC_MIS_DATE ='||PD_AS_OF_DATE;
          SQL_STMT := SQL_STMT ||' AND V_MEMBER_CODE='||PV_MEMBER_CODE;
          SQL_STMT := SQL_STMT ||' AND D.V_BRANCH_CODE=' ||'GRA';
          SQL_STMT := SQL_STMT ||' AND D.V_TXN_CODE='||'REP'; 
          end if; 
        
           OPEN CUR_PROJECTION_OUT FOR  SQL_STMT;
                                          
    END PR_PROJECTION_QUERY;
                                   
    END PKG_EW_PROJection_QUERY;
    
    and i got below error
    
    Error starting at line 2 in command:
    EXEC PKG_EW_PROJection_QUERY.PR_PROJECTION_QUERY('31-JUL-2011','PAK','GRA-PRINCIPAL',:CUR_POS_OUT)
    Error report:
    ORA-00604: error occurred at recursive SQL level 1
    ORA-01003: no statement parsed
    00604. 00000 -  "error occurred at recursive SQL level %s"
    *Cause:    An error occurred while processing a recursive SQL statement
               (a statement applying to internal dictionary tables).
    *Action:   If the situation described in the next error on the stack
               can be corrected, do so; otherwise contact Oracle Support.
    CUR_POS_OUT
    ------
    can you please let me know where I hurt m.

    If you need more information please let me know.

    Thank you
    Ritesh.

    You do not have anything in your example that requires dynamic sql.

    Consider this:

    declare
       cursor my_cur (val1 varchar2, val2 number) is
            select column1, column 2
            from table1
            where column1 = val1
                and column2 = val2;
    begin
         if your_condition then
             --process the cursor declared above
             for cur_rec in my_cur ('ABC', 12)
             loop
                  do something
             end loop;
          end if;
    end;
    

    In your example, you're just concatenate strings together, which could be managed with variables.

  • Dynamic where clause of user defined reports

    Hello everyone,

    Is there a way to make / calculate a where clause clause in a user defined report according to the value of some bind variables?
    I am trying to remove where the terms of my application if the binding variable is not defined.
    previously, I did something as
    AND tab.column = nvl (: colum_bin, tab.column)

    but there are problems in implementation plans.

    Stone

    Sure that you can not, but how about you to rewrite the NVL in

    OR: colum_bin IS NULL

    Hope that helps,
    K.

  • Dynamic WHERE Clause with multiple ORs

    I need to build a dynamic SQL statement such as the clause WHERE looks / works as follows:

    WHERE x LIKE '%1% ' OR LIKE '%2% ' x OR x LIKE '%3%...

    I can do the above, no problem, but I wonder if there is a better way?

    Thank you

    Mark

    Hi, Mark,.

    You should not need dynamic SQL for that.

    For example, if you are still interested in substrings of characters suingle, and you get entry as a unique string called str (e.g. '123' it which means you want to find the rows where x contains '1', '2' or 3'), so you could say:

    ...

    WHERE (x REGEXP_LIKE

    , '[' || str || ']'

    )

    I hope that answers your question.
    If not, post a small example data (CREATE TABLE and INSERT statements), a few entries and also post the desired results of each input given the same data.
    Explain, using specific examples, how you get these results from these data.
    Always say what version of Oracle you are using (for example, 11.2.0.2.0).

    See the FAQ forum: https://forums.oracle.com/message/9362002#9362002

  • How to set dynamic IN clause in English query

    Hi ADFExperts,

    I have a requirement as if I had a viewObject

    Let's say that "select * contact"this query result is 20 lakhs records.

    My requirement,

    I have to apply the clause 'IN' in this display object so that it will bring only required line.

    For example Select * from contact where name: bindName;

    I'm passing in the param type string "(" James","John") bindName '"

    and I will execute VO.

    But it is not the result.

    Help, please.

    User, please tell us your jdev version!

    Check out Jobinesh blog decompilation binary ADF: using bind variable for SQL statements with the paragraph which you shoes how to proceed.

    Timo

  • getting and setting dynamic o-zone for flex graphics

    I am pulling data from an amfphp service for

    a series of charts. My client wants now to the fields of the chart and display data dynamically so that they can change the service with to break the charts.

    For example {month: "January", Flex: 39, Flash: 71.8, Photoshop:23.7},

    They would like to be able to change the names of software and cards would continue to operate without having to go into the code and change the yfield property.

    An example of code would be great. Thanks in advance.

    You can declare a string variable can be bound that you can use as a title in your axis:

    [Bindable]

    private var labelForAxis:String ="";


                   
               

    Whenever you change the string variable you label will also change.

  • Dynamic IN clause for the PL/SQl NDS

    Hi all

    How to make the following statement to analyze

    IF v_cn_station = 1 THEN
    IN_clause_string: = ' ' (1);
    ON THE OTHER
    IN_clause_string: = '(1,0);
    END IF;

    IMMEDIATE EXECUTION
    ' SELECT s.sm_cmr_lbl, s.sm_sysm_lbl, s.sm_tts_desc
    OF station_message sm,.
    special_message_data smd,
    s special_message
    WHERE smd.sm_dte =: dos_Dte
    AND sm.post_id = smd.post_id
    AND sm.sm_enable_cd IN: In_Clause
    AND smd.sm_id = s.sm_id
    AND sm.station_id =: station_ID
    AND sm.ssm_dir_cd =: direction_CD'
    BY v_StationMessage_IVR.t_CMR,
    v_StationMessage_IVR.t_SYS,
    v_StationMessage_IVR.t_TTS
    With the HELP of v_dos_Dte,.
    IN_clause_string,
    v_station_ID,
    v_direction_CD;

    I get an error invalid number

    Thank you
    brand

    See the changes below, you concatenate the string not use it as a variable binding.

    -- USE This way example
    select * from emp  ,
    (
    with t1 as (select level l from dual connect by level < 1000)
    ,    t2 as  (select 'SCOTT,ALLEN,KING'||',' c from dual)
    select
    substr(c,
    nvl(lag(instr(c,',',1,l))over( order by null),0)+1,instr(c,',',1,l)
    -1-nvl(lag(instr(c,',',1,l))over( order by null),0)) dyn_emp
    from t1,t2
    )
    where dyn_emp = ename
    /
    
    SQL> /
    
         EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO DYN_EMP
    ---------- ---------- --------- ---------- --------- ---------- ---------- ---------- -------
          7788 SCOTT      ANALYST         7566 19-APR-87       3630                    20 SCOTT
          7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30 ALLEN
          7839 KING       PRESIDENT            17-NOV-81       5000                    10 KING
    
    -- IN CLAUSE cannot use bind variable but can be done like this
    -- The above method is preferred method.
     IF v_cn_station = 1 THEN
           IN_clause_string:= '(1)';
         ELSE
           IN_clause_string:= '(1,0)';
         END IF;
    
         EXECUTE IMMEDIATE
          'SELECT s.sm_cmr_lbl, s.sm_sysm_lbl, s.sm_tts_desc
                  FROM station_message     sm,
                       special_message_data   smd,
                       special_message        s
                 WHERE smd.sm_dte = :dos_Dte
                   AND sm.post_id = smd.post_id
                   AND sm.sm_enable_cd IN '|| In_Clause_string||  ---Change this
                   AND sm.station_id = :station_ID
                   AND sm.ssm_dir_cd = :direction_CD'
             INTO v_StationMessage_IVR.t_CMR,
                  v_StationMessage_IVR.t_SYS,
                  v_StationMessage_IVR.t_TTS
            USING v_dos_Dte,
                  IN_clause_string,
                  v_station_ID,
                  v_direction_CD;
    
  • Dynamic where clause

    Hello
    I have a table named TEST_TAB that has three columns - COL1, COL2 and COL3.
    COL3 PEUVENT having distinct values of 1,2 and 3.
    I need select * from TEST_TAB following conditions.

    If COL3 has values 1,2 and 3 and select * should return only the rows with COL3 = 1.
    If COL3 has no values 1, then select * should return only the rows with COL3 = 2.
    IF COL3 is either 1 or 2, then select * should return only the rows with COL3 = 3.

    Is it possible to do in a SQL? I prefer a single SQL.

    Thank you.
    Sajeeva Lacotte.

    Something like

    select *
    from TEST_TAB
    where ( COL3 = 1
          or ( COL3 = 2 and not exists ( select null from TEST_TAB where col3 = 1 ) )
          or ( COL3 = 3 and not exists ( select null from TEST_TAB where col3 in ( 1, 2 ) ) )
          )        
    

    Anton

Maybe you are looking for