How to substitute a bind variable for a IN condition?

Dynamically I am setting the WHERE condition for one of my blocks using SET_BLOCK_PROPERTY Built in. The condition that I am attaching has two IN conditons..
For Eg.,
contracts_tbl.status_col IN ('NEW', 'OLD', 'EXPIRED', 'OPEN')
AND contracts_tbl.id_col IN (1, 2, 3, 4)
The number of choices in the IN condition will vary depending upon the user choice in my screen. Because of this the parsed SQL state is could not be shared and multiple of these are getting created in shared pool. To avoid this I would like to use bind variables.
There are two ways I am trying to do this..
1. Generating one bind variable for each value. i.e.,
contracts_tbl.status_cod IN (:global.var1, :global.var2,
:global.var3)
Now this could result it memory error if no. of choices exceeds the avilable memory. Also its a tedious task to purge the variables after querying the block. Also because of multiple IN conditions, the chances of different set of selections are possible and then again sharing will be minimal.
2. The second method is to set the one bind variable for each IN condition. i.e.,
:GLOBAL.Var1 := '( 'NEW', 'OLD', 'EXPIRED', 'OPEN' )';
:GLOBAL.Var2 := '(1, 2, 3)';
contracts_tbl.status_col IN :GLOBAL.Var1
AND contracts_tbl.id_col IN :GLOBAL.Var2
In this case, forms is not querying as the IN condition takes the global variable value as one string and the query returns no rows though there are plenty available for each status. Also any NUMBER type condtions erroring out as the , and ( are invalid numerals.
Q: Is there anyway you can make this work? or Is there any other better method to substitute bind variables in place to avoid creating new set of statements for each query in the shared pool?
Your suggestions and pointers are higly appreciated. Please respond immediately as this is a P1.
Thanks,
-- Raam.

2. The second method is to set the one bind variable for each >>IN condition. i.e.,
:GLOBAL.Var1 := '( 'NEW', 'OLD', 'EXPIRED', 'OPEN' )';
:GLOBAL.Var2 := '(1, 2, 3)';
contracts_tbl.status_col IN :GLOBAL.Var1
AND contracts_tbl.id_col IN :GLOBAL.Var2 This method should work - not sure if you put exact syntax in or not but your first assignment would cause a problem as everywhere you want one ' mark you would have to put two so that it does not close your quoted string
Try the following syntax:
:GLOBAL.Var1 := '( ''NEW'', ''OLD'', ''EXPIRED'', ''OPEN'' )';
:GLOBAL.Var2 := '(1, 2, 3)';
SET_BLOCK_PROPERTY('blk name',
default_where,
'contracts_tbl.status_col IN ' || :GLOBAL.Var1
|| ' AND contracts_tbl.id_col IN ' ||
:GLOBAL.Var2);
Hope this helps,
Candace Stover
Forms Product Management

Similar Messages

  • How do I use bind variables for the SQL statements having IN clause

    SELECT id, name FROM t
    WHERE id in (10,20,30)
    As the IN list will have 'n' number of values, I am not able to specify fixed number of bind
    variables like
    SELECT id, name FROM t
    WHERE id in (?,?,?....)

    452051 wrote:
    I am not able to specify fixed number of bind variablesYou could use collection:
    SQL> create or replace force
      2    type NumList
      3      as
      4        table of number
      5  /
    SQL> select ename from emp where deptno member of NumList(10)
      2  /
    ENAME
    CLARK
    KING
    MILLER
    SQL> select ename from emp where deptno member of NumList(10,20,30)
      2  /
    ENAME
    SMITH
    ALLEN
    WARD
    JONES
    MARTIN
    BLAKE
    CLARK
    SCOTT
    KING
    TURNER
    ADAMS
    ENAME
    JAMES
    FORD
    MILLER
    14 rows selected.
    SQL> This way you have one bind variable - collection.
    SY.

  • How to set bind variable for a VO ,

    Hi,
    i got a requirement in which i have to set bind variable for VO , But the Bind variable is coming from payload attribute,
    For example my query in VO is select * from Employee where emp_id="payload attribute"
    How to set this attribute value is from the payload
    Thanks Regard
    Rajendar

    Hi i am getting this exception " Cannot create an object of type:java.lang.Number from type:oracle.bpel.services.datacontrol.data.DataObject with value:21159"
    Actually i am getting Decimal Value from Payload of BPEl process and i am trying to set this to The bind variable
    is that a type cast exception where can i typeCast Those values You should this in a new thread.Dont ask questions out of the scope of this thread.
    Please mark this thread as answered or helpful if you got solution for this thread.
    Thanks!!!

  • How to pass pageFlowScope variable value as bind variable for VO

    Hi,
    I have one fixed lov (not based on datasource), if i select any value in that lov i want to pass this value to a pageFlowScope variable.
    After this i want to use this value as bind variable for VO. whenever the vo executes thereafter this bind variable should filter that vo results.
    My jdev version: 11.1.0.0
    Thanks in advance,
    SAN

    san-717,
    can you elaborate on the use case instead of the implementation you don't get done? I understand you have data displayed in a tree: so lets assume the tree structure is Locations, Departments and Employees according to the Oracle HR sample schema.
    1. What is the LOV supposed to do ?
    2. Where is the LOV located ?
    3. What values does the LOV show ?
    4. Is the LOV a select choice component or a real LOV (with search dialog)
    5. Where is the bind variable used ?
    To me it sounds like you want to filter the tree data based on the select choice value. However, you wont do this by passing the bind parameter to all View Objects involved as they may not have the attribute in their query. So your use case is important to answer the question
    Frank

  • How to set bind variables for child VO in hierarchy component?

    Hi,
    Recently I created a application with Hierarchy Component with Parent VO (Query based VO with Bind variables in it) and its Child VO along with Child-Child VO(Query based VO with bind variable in it)
    I am able to set bind variable of parent VO but unable to set bind variable for Child-Child VO. Can any one help me regarding this issue?

    Hi i am getting this exception " Cannot create an object of type:java.lang.Number from type:oracle.bpel.services.datacontrol.data.DataObject with value:21159"
    Actually i am getting Decimal Value from Payload of BPEl process and i am trying to set this to The bind variable
    is that a type cast exception where can i typeCast Those values You should this in a new thread.Dont ask questions out of the scope of this thread.
    Please mark this thread as answered or helpful if you got solution for this thread.
    Thanks!!!

  • How to declare a bind variable with 'date' data type in command prompt?

    how to declare a bind variable with 'date' data type in command prompt?
    sql>variable q date;
    when i execute it show list of datatypes

    Hi,
    As Lokanath said, there are no DATE bind variables.
    You can use a VARCHAR2 bind variable, and convert it to a DATE in your SQL statment.
    If you're using SQL*Plus, consider a substitution variable. It won't be as efficient as a bind variable, but it will be as convenient.
    For example:
    DEFINE  first_entrry_date = "DATE '2010-06-20''
    SELECT   ...
    WHERE   entry_date >= &first_entry_date
    {code}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Setting bind variables for VO in JUnit test case

    Hi,
    I am using Jdeveloper 11.1.2.2
    I have a problem while writing the test case for VO in JUnit.
    For the Remove method in the Test case , I have passed variables into the VO by using a setWhereClause() .
    Like this :
            view.setWhereClause(null);
            String whereClause = "location_id = '" + newUpdatedLocationId  + "' AND organization_id = '" +newOrganizationId + "'" ;
            view.setWhereClause(whereClause);
            view.executeQuery();
            while (view.hasNext()) {
                view.next();
                view.removeCurrentRow();
            fixture1.getApplicationModule().getTransaction().commit();But it is showing a an error like the bind variables are not set.
    So how will I access Bind variables programmatically and set the values ?
    Thanks
    Nigel.

    setNamedWhereClauseParam() is used for setting bind variables

  • Extract the "bind" variables for a given query running in 10g.

    how can we extract the "bind" variables for a given query running in 10g? The performance of a query may vary based on the parameters supplied to it. For example, a query like the following
    SELECT * FROM CUSTOMER_ORDERS WHERE CUSTOMER = :CUST_ID
    .might run differently when the :CUST_ID is "123" who may have very few orders versus "456" who may have tens of thousands of orders.
    So, if we see a spike in the system due to a query, we need visibility into what the exact query syntax and values are for any database session. We're aware of an Oracle view called V$SQL_BIND_CAPTURE, but what we're finding with this view is that it's only a snapshot of variables that are refreshed on an interval. That view does not give us a live view into what values are being used in the various sessions in realtime.
    If someone ould provide us with some SQL (or other means) to do get a realtime view into the SQL and variables currently running in the database, it would be greatly appreciated.

    In addition to what's been said in the other thread, you could add a layer of logging either in the database or out.
    v$sql_bind_capture and the associated ash view dba_hist_sqlbind contain sample data.
    You could up the sample rate but it's not advisable - it's still just a sample.
    If you're on 11g, this is where adaptive cursor sharing might help.
    Not help in finding the values of your binds, but help in using different plans where there is such a skew for different bind values and the plan is perhaps wrong for customer 456.
    The problem when you're got such a skew and you're using bind variables is that the two don't really go together.
    When the query is next parsed and you've got bind variable peeking enabled, you might get the 123 plan is that is the bind value at parse time and then run into problems for 456 or even vice versa.
    See http://jonathanlewis.wordpress.com/2009/05/06/philosophy-1/ for a discussion on binds and histograms which reflects the reasons for using either.

  • How to identify the bind variable peeking problem?

    How to identify the bind variable peeking problem whether my db hitting or not and how to resolve it?
    currently we are doing the dbms_stat of application schema's with gather auto option and i hope this option we take the histogram stats also. Is there any option to improve it and its highly transactions oltp env of 11g.

    What is your exact 4 digits Oracle version ?
    Bind peeking issues are supposed to be solved with adaptative cursor sharing in 11.1 and 11.2:
    11.1 http://download.oracle.com/docs/cd/B28359_01/server.111/b28274/optimops.htm#sthref919.
    11.2 http://download.oracle.com/docs/cd/E11882_01/server.112/e16638/optimops.htm#PFGRF94588
    which says also:
    >
    Adaptive cursor sharing is enabled for the database by default and cannot be disabled. Note that adaptive cursor sharing does not apply to SQL statements containing more than 14 bind variables.
    >
    Edited by: P. Forstmann on 10 nov. 2011 13:50

  • How to use the bind variable in custom.pll

    Hi,
    How to use the bind variable in custom.pll.Its through error.
    any one gem me.
    very urgent.
    M.Soundrapandian.

    Hello,
    Please, ask this kind of questions in the e-business forum.
    Francois

  • How can i create "bind variable"

    How can i create "bind variable" in my DB to support any procedure in my DB.
    Thank you very much.

    In SQL*PLUS we can defined bind variable
    SQL>var x varchar2(250); -- Is x bind variable or i'm misunderstand ?
    and ... in my procedure i can used ' &x ' to pass valued of 'x' from sql prompt to my procedure.
    but i'm not sure variable x is still remain in DB because i need to pass variable
    " v_stmt := 'and employee_id between ..... ' " from FORM to PROCEDURE in DB
    how can i do

  • How to properly set bind variables

    Dear All,
    I am currently confused about how to properly set my Bind Variables
    I have this view using HR standard schema
    Select *
    from Employees
    where EMPLOYEE_ID = :EMP_IDI somehow see three options on how to use this bind variable in an application module.
    Option 1:
    ViewObjectImpl view = this.getEmployeesView();
    VariableValueManager vm = view.ensureVariableManager();
    vm.setVariableValue("EMP_ID", value);
    view.executeQuery();Option 2:
    ViewObjectImpl view = this.getEmployeesView();
    view.setNamedWhereClauseParam("EMP_ID", value);
    view.executeQuery();Option 3:
    EmployeeViewImpl empView =this.getEmployeesView();
    RowSetIterator it = empView.createRowSetIterator(null);
    empView.setEmployeeId(value);
    empView.executeQuery();Question is which is which and what should I use?
    JDEV 11G PS3

    I use is this
    DCIteratorBinding iteratorStatus = Util.getIterator("NameIterator");
    operationBinding.execute();
    Util is reserved in a class.
    public static DCIteratorBinding getIterator(String iteratorName){
    return getDCBindings().findIteratorBinding(iteratorName);
    }

  • Bind variable for view accessor

    I am using a Gantt chart where I need to pass in a date field for the schedule as a bind variable.
    Since this is a Gantt chart, there is no iterator binding for the child VO (the tasks) in my page definition.
        <gantt IterBinding="ParentVO1Iterator" id="ParentsVO1" xmlns="http://xmlns.oracle.com/adfm/dvt">
          <ganttDataMap>
            <nodeDefinition DefName="com.pat.model.view.ParentsVO" type="Resources">
              <AttrNames>
                <Item Value="ParentId" type="resourceId"/>
              </AttrNames>
              <Accessors>
                <Item Value="MainGantt" type="tasks"/>
              </Accessors>
            </nodeDefinition>
            <nodeDefinition type="Tasks" DefName="com.pat.model.view.MainGantt">
              <AttrNames>
                <Item Value="PatId" type="taskId"/>
                <Item Value="StartTimeDate" type="startTime"/>
                <Item Value="EndTimeDate" type="endTime"/>
                <Item Value="Patname" type="label"/>
              </AttrNames>
            </nodeDefinition>
    I have tried retrieving the accessor through the parent VO, and setting the bind variable.
    But I get an error if I fire executeQuery() on the child VO that says that the bind variable for the view link is missing.
            DCIteratorBinding iter = dcBindings.findIteratorBinding("ParentVO1Iterator"); // get parent iterator binding
            ViewObject vo = iter.getViewObject();
            MainGanttImpl childVO = (MainGanttImpl)vo.findAttributeDef("MainGantt").getAccessorVO(vo); //get the child VO through the accessor link
            childVO.setpViewDate(new Timestamp(((Date)getGanttDate().getValue()).getTime())); // get the date entered by the user and set to the child VO
            childVO.executeQuery(); //execute the child VO
    Exposing the child VO impl through the Application module and setting the bind variable to that instance alone has no impact on the Gantt data returned.

    We researched a bit more and hit upon the solution here.
    Decompiling ADF Binaries: Search by child attributes on a tree table
    I added the same bind variable to my parent VO (and added some SQL 'and : pViewDate = : pViewDate' to the query to just get it to work )
    In the parent VO Impl class, I overrode the createViewLinkAccessorRS method:
       protected ViewRowSetImpl createViewLinkAccessorRS(AssociationDefImpl assocDef,
                                                          ViewObjectImpl accessorVO,
                                                          Row masterRow,
                                                          Object[] values) {
                ViewRowSetImpl v =
                super.createViewLinkAccessorRS(assocDef, accessorVO, masterRow,
                                               values);
          //  Timestamp viewDate = (Timestamp )accessorVO.getNamedWhereClauseParam("pViewDate");
            v.setNamedWhereClauseParam("pViewDate", getpViewDate());
            return v;                                                    
      public Timestamp getpViewDate() {
            return (Timestamp) getNamedWhereClauseParam("pViewDate");
    This sets the child VO with the value of the bind variable that I have set to my parent VO. This got the Gantt working!

  • How to create a 0FISCPER variable for [last period of current year]

    Hello,
    Can anybody tell me how to create a (exit) variable for the last period of the current year, based on 0FISCPER ?
    Based on a single value, user entry variable based on 0FISCPER.
    I did not find any standard (business content) variables for this.
    Can anybody tell me whether the following alternative works:
    variable 0P_BA102 (last period pervious year) with offset of +12 
    Kind regards.

    Hi,
    It should work.
    You can refer to the following link:
    http://help.sap.com/saphelp_sm32/helpdata/en/3f/89533e5ff4d064e10000000a114084/content.htm
    Regards,
    Amit

  • How to  Create  a selection variable for Fiscal period/year range

    How to  Create  a selection variable for Fiscal period/year range. The idea is to filter the query results using a fiscal period/year range user input rather than a full fiscal year input.

    Hi Priya,
    Open the query in a query designer -> in the left hand side you would find the fiscal year period under the time dimension -> right click -> create variable -> create the variable.
    The better option would be use any of the SAP provided variable. You would find them under the Fiscal year period in the left hand side in the query designer.
    Bye
    Dinesh

Maybe you are looking for

  • HT204266 how to change app store account to other country for my ipad ? so I can update my app

    everytime I try to update my app at my ipad, they will not allow me to do it, the "Account Not for This Store- you must switch to the Chinese store before purchasing" keep poping up, I lived in the US, why I need to switch to Chinese store, question

  • Windows Vista - enter CD and it says iTunes has encountered an error. Help?

    Basically, I bought a iPod the other day and installed the latest version of iTunes. I put a CD in to rip and within seconds of ripping I got a message saying 'iTunes has encountered an error and needs to close. Windows will contact you if there is a

  • PDF size of a scan

    Hello there, I was trying to find a solution to this, but even Mr. Google doesn't know much. My problem is that after upgrading to 10.6 and using the build in Scan feature that came with Snow Leopard, the PDF scans are coming too big. For example a s

  • Mail not updating after recent update

    After the recent update my mail does not update unless I press the mail icon. In the past I would hear a sound and a number would appear next to the icon letting me know how many mails received. Any ideas?

  • Data Flow from TXT to a table error

    Hello, I am trying to fill in the data from a .txt file I have into a table in a DB. Previously this worked fine in DTS and I can still do it when I import the DTS command but I want to update this to a data flow because the DTS commands needs to be