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

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

  • 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

  • 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.

  • 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

  • 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

  • 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

  • Problem with dynamic setting where the clause OFA

    Hi all

    I have a view object with the following query:

    SELECT rownum LINENUM,

    B.line_id LINE_ID,

    B.INVENTORY_ITEM_ID INVITMID,

    B.QUANTITY_DELIVERED PICKQTY

    MTL_TXN_REQUEST_HEADERS a,.

    MTL_TXN_REQUEST_LINES B

    WHERE A.HEADER_ID = B.HEADER_ID

    AND A.MOVE_ORDER_TYPE = 2

    AND "on" =: 1

    AND B.TO_SUBINVENTORY_CODE = NVL(:4,B.TO_SUBINVENTORY_CODE)

    AND A.request_number = NVL(:5,A.REQUEST_NUMBER)

    UNION ALL

    SELECT rownum LINENUM,

    a.wip_entity_id LINE_ID,

    a.INVENTORY_ITEM_ID INVITMID,

    a.QUANTITY_ISSUED PICKQTY

    WIP_REQUIREMENT_OPERATIONS has

    eam_work_orders_v b

    WHERE a.wip_entity_id = b.wip_entity_id

    AND "on" =: 2

    AND a.ATTRIBUTE2 = NVL(:4,a.ATTRIBUTE2)

    and b.wip_entity_name = NVL(:6,b.wip_entity_name)

    I need to dynamically pass a condition to my where clause that I can manage it by setting two binding settings in the query of vo and can pass it on but the problem is the connection variable contains a string like 1311,13112,14445 that I need to spend for a domain like B.line_id in the first query and b.wip_entity_id in the second query , so when I'm passing the string as a value it works fine, but it gives for value separetd by comma prob.

    so I tried passing dynamic where clause, but there is every time that the execution of the first clause only how can I dynamically pass both queries.

    vo.setWhereClause ("LINE_ID in" + wherclause);

    Please help me

    Thnaks

    Deb

    Hello

    Actually I'm passing the parameter to the basic page popup, so in page popup page and the base, I was using the VO even to run then, probably due to that he was running again for all data, so for the basic page I created a new VO and tried to pass the parameter like when clause for questioning now it runs very well Thank you for all your help

  • How to dynamically generate where clause in Linq

    Hi all


    Oracle DB: 11 gR 2
    Oracle Client: 11.2.0.3.0 (ODP.NET)
    Oracle Developer Tools for Visual Studio
    VS 2010 (C#)

    In a Windows Form, it must query the data based on the values in list dropdown listboxes, which the user selects.
    Let's say two combox, one Department and one for salary
    Department:
    -1 all the
    10 Department 1
    20 Department 2
    30 Department 3

    Salary:
    -1 all the
    1 < 20000
    2 20000 to 50000
    3 50000 to 100000
    4 > 100000


    Here is the c# code to query data:
    using (var myEDMctx = new HREntities())
    {
    var LINQrslt = from emp in myEDMctx.EMPLOYEES
    Select emp;

    }


    The default values for the two combox should be everything.
    How to write dynamic where clause for this LINQ?

    Thanks in advance!

    That's what I do.

    var query = from c in customers
    Select c;

    If (where1 > - 1).
    Query = query. Where(c.Where1 > where1);

    If (where2 > - 1).
    Query = query. Where(c.where2 == where2);

    to return the query;

    Published by: Invincible on July 4, 2012 09:25

    Published by: Invincible on July 4, 2012 09:27

  • Add where clause dynamically

    Hi Experts,

    I have a VO with query like select * ministries dept, emp where dept.dept_id = emp.dept_id group... by order of dept.dept_id employees

    At runtime, I need to add where clause with (and in dept.dept_id (select dept_id from table2))

    I tried to use the vo.setWhereClause () method. But it does not work

    Is there another solution?

    I use Jdeveloper 12.1.3

    Thanks in advance.

    There are various possible solutions for this. You can either use setQuery that defines the entire sql statement. However, you then need to delete where condition adding yourself too.

    Or you use viewCriteria as explained in this blog http://www.ahsanscorner.com/content/2015-11-16-1942-simulating-sql-clause-adf-viewcriteria-api.

    Another approach is described by this blog Jet binary: using bind variable for SQL statements with the paragraph who uses a SQL table to build the in clause.

    Timo

  • dynamic logic in SQL WHERE clause based on the value of the ELEMENT

    Hello

    I have a report based on the following SQL query.
       select dept_no,
           dept_name,
           dept_loc
      from dept
     where dept_loc = :P1_DEPT_LOC
       // If P1_DEPT_LOC is not null, I want the WHERE clause and IF  P1_DEPT_LOC is null, then I don't need the WHERE clause.
       // how can I build this logic in same SQL
    Thank you
    Deepak

    Published by: Deepak_J on March 11, 2010 16:37

    where: P1_DEPT_LOC IS NULL or dept_loc =: P1_DEPT_LOC

    If dept_loc is not null better would be

    where dept_loc = coalesce(:P1_DEPT_LOC,dept_loc)

  • dynamic instruction in where clause?

    Hi all

    I am writing a procedure and the request will be different according to the input parameters.

    I wonder how I can do this inside where clause? simplified example

    Select *.
    from tableA, tableB b
    where a.id = b.id
    / * If input parameter = "abc" then * /.
    and a.total = b
    / * If input parameter = "xyz" then * /.
    and a.total! = b

    I was thinking case statement, but from what I've read, it cannot be used in this situation

    Thank you

    Hello
    This give a try.
    not tested

    select *
    from tableA a, tableB b
    where a.id = b.id
    and (a.total=
    case when :input_param='abc' then
     b.total
    end
    or
    a.total !=
    case when :input_param='xyz' then
     b.total
    end)
    

    See you soon!
    Bobin

  • Using a CASE statement in 'IN' where clause clause

    Hello

    I have a form that users see after they connect with a few items and they type or select values based on the element type. All reports in the application use these values of PAGE 1 in where clause to filter the lines.

    One of these question is "Quarter".  I have a group of radio buttons on the PAGE 1 on the P1_QTR point.

    I need to provide users a way to take the last 4, last 3, last 2 or current quarter and I need to dynamically build a clause WHERE the interactive report based on the selection in the form.

    I am trying to use the CASE as shown below and get the syntax error.

    AND QTR to (when BOX: P1_QTR = 'CURRENT' then ("T4"))

    When: P1_QTR = "LAST" then ("Q3")

    When: P1_QTR = 'LAST TWO' then ('Q3, "Q4")

    When: P1_QTR = 'LAST THREE' then ("Q2", "Q3,' T4 ')

    another ("T1", "T2", "Q3,' T4 ')

    END)

    How can I achieve this?

    Following a simple logic, try

    and QTR to

    (

    Select 'T4' double where: P1_QTR <> 'LAST '.

    Union of all the

    Select 'Q3' to double where: P1_QTR <> "in PROCESS".

    Union of all the

    Select "Q2" double where: P1_QTR not in ('CURRENT', 'LAST', "LAST TWO")

    Union of all the

    Select "Q1" double where: P1_QTR not in ('CURRENT', 'LAST', 'LAST TWO', 'THREE LATEST')

    )

Maybe you are looking for

  • Formula to determine if a specific day of the week between two dates?

    I am creating a spreadsheet to track my time PD & holiday. I usually work weekends, and my vacation allowance includes a specific maximum number of Sundays a year. Is there a way to calculate how much Sunday fall between a date range (or any day of t

  • J6450 wireless in Vista 64 and XP 32/Vista 32 environment

    I installed my Office Vista 64 and reconfigure the J6450 to run infrastructure wireless with 2 laptops running XP 32 and 1 laptop running Vista 32. I have had no problem the printer and the conduct of Vista 64 but I couldn't share the printer with la

  • What virus protection software is recommended for the Mac?

    I remember reading something in the help of malware from reading Apple where they recommend to use an antivirus program on the Mac.  Are there suggestions for specific providers?  Thank you.

  • Advice on all round security suite for PC family

    Hello Basically, I'm looking for a recommendation on an all-round security suite protect computers oriented families 2. Currently I use a paid version of Spyware Doctor with anti virus and Avast 4 Home edition free, even if they seem to do the trick,

  • Windows 8 needs activation, tried Slui.exe 4 does not

    I had windows 8 years and have had no problem. just recently my pc has been telling me that I need to activate it. I tried to activate online that did not help, I tried to use slui.exe 4 but it goes just in a continuous charge and once it worked but