IF Statement Peformance Question

I have an abap program that performs 20% better with a simple change in the structure of the if statement.  Anyone got any explaination why this would be so?  I would really appreciate any insight into this.
This code:
IF sy-tcode IN r_order_tcodes.
...some logic #1....
ELSEIF sy-batch EQ 'X' OR
       ( sy-cprog = 'ZSR_ECAT_GENERATE_V3' ).
...some logic #1....
ENDIF.
executes 20% faster than this code:
IF sy-tcode IN r_order_tcodes OR
   sy-tcode IN r_ecat_tcodes OR
   ( sy-batch EQ 'X' AND
   ( sy-cprog EQ 'ZSR_GENERATE_ECAT_V3' OR
     sy-cprog EQ 'ZSR_ECAT_SINGLE_CONFIG'
  ...some logic #1...
endif.
Thanks.
Scott

Hi,
I believe the tcodes in r_order_tcodes and r_ecat_tcodes will have the same programs given in the else condition...
Looks like This following simple IF statement will work for all the scenarios..
Try this..
IF SY-CPROG = 'ZSR_GENERATE_ECAT_V3' OR
    SY-CPROG =  'ZSR_ECAT_SINGLE_CONFIG'.
...some logic #1....
ENDIF.
Thanks,
Naren

Similar Messages

  • ACE 4710 - show stats connection questions

    Hi,
    I have three questions regarding the "show stats connection" command in the ACE 4710:
    1. What is the criteria for a connection to be added to the "Total Connections Failed" counter?
    2. What is the criteria for a connection to be added to the "Total Connections Timed-out" counter?
    3. Is there a command to get more information why the connection was failed or timed-out (e.g. to/from which IP, url accessed etc.)?
    Thanks in advance for your help!
    Best regards,
    Harry

    Harry,
    a connection failed if the server did not respond or resonded with a RST.
    As long as the connection gets establised, it is counted as a success.
    The connection timeout counter is incremented when the connection is idle for the configured timeout value or for L7 connections if it does not complete the 3-way handshale within the embryonic timeout interval.
    Since this is clear why those counters are incrementing, the only way to get more information is to capture a sniffer trace to verify if the conditions above are met.
    Gilles.

  • Where clause with a combination of And and Or statements - Basic question

    Hi,
    I have a where clause with a combination of And and Or statements... May I know which one would run first
    Here is the sample
    WHERE SITE_NAME = 'Q' AND ET_NAME IN ('12', '15') AND TEST_DATE > DATE OR SITE_NAME = 'E' AND ET_NAME IN ('19', '20')
    can you please explain how this combination works
    Thanks in advance

    Hi,
    This reminds me of a great story. It's so good, it probably didn't really happen, but it's so good, I'm going to repeat it anyway.
    IBM once had an "executive apptitude test" that they would give to job applicants. There were some questions you might call general knowlege or trivia questions, and each question had a weight (for example, answering an unimportant queestion might score one point, an important question might be 5 points.) One of the questions was "What is the standard width of a mobile home?", and the weight of the question was -20: answering the question correctly did serious harm to your score. The reasoning was that the more you knew about mobile homes, the less likely you were to be their kind of executive.
    Now, as to your question, the correct answer is: I don't know. I don't want to know. Mixing ANDs and ORs without grouping them in parentheses is a really bad idea. Even if you get it right, it's going to confuse the next person who has to look at that code. Use parentheses to make sure the code is doing what you want it to do.
    If you really want to find out, it's documented in the SQL language manual. Look up "Operators, prcedence"
    http://docs.oracle.com/cd/E11882_01/server.112/e26088/operators001.htm#sthref815
    You can easily do an experiment, using scott.emp, or even dual, where
    WHERE  (x AND y)
    OR      zproduces different results from
    WHERE   x
    AND     (y OR z)

  • Total Compensation Statement - BADIs Question

    Question:
    The total compensation statement is programmed to read off the payroll cluster for the wage types identified in the pay category in configuration.
    I noticed there are set of BADIs available for country specific enhancement. Could someone explain the purposes of it? Since wage type could be configured as country specific already, what is the purpose of these country specific BADIs?
    Also. If information is NOT stored in the payroll cluster but via a custom infotype, would utilizing these BADI be able to read the information from it? Or would that required a separated program and the BADI functionality won't be able to do them?
    These are the BADI delivered...
    Read Data on Subcategory Defined by SAP (Pay)
    Read Data on Customer-Defined Subcategory (Pay)
    Read Data on Subcategory Defined by SAP (Other Compensation)
    Read Data on Customer-Defined Subcategory (Other Compensation)
    Read Data on Subcategory Defined by SAP (Personnel Development)
    Read Data on Customer-Defined Subcategory (Personnel Development)
    Read Data on Subcategory Defined by SAP (Benefits)
    Read Data on Customer-Defined Subcategory (Benefits)
    Read Data on Customer-Defined Category
    Thanks,
    KN

    FYI for anyone interested...
    Yes you could use these BADI to redirect it from looking at the payroll clusters to a custom table or infotype. Within the BADI you would need to use the IMPORT values to do lookup and export out the tab values needed. Including what you would like to see on the screen, etc.
    I'll create a blog on how to do this when i get a chance www.saphelpbykevin.com

  • Issue with Select options in select statement - ABAP Question

    Hi
    I am facing an issue with select options. Select statement is returning sy-subrc as 4.
    I wrote the program as below:
    SELECT-OPTIONS:
    s_kunnr FOR bsad-kunnr,
    s_lifnr FOR bsak-lifnr,
    s_gjahr FOR bsad-gjahr,
    s_bukrs FOR bsad-bukrs,
    s_saknr FOR bsad-saknr,
    s_budat FOR bsak-budat.
    In start of selection I have written the select statement as
    SELECT * FROM bsak INTO TABLE lt_bsak
    WHERE bukrs IN s_bukrs AND lifnr = s_lifnr AND gjahr IN s_gjahr AND budat IN s_budat AND saknr IN s_saknr.
    In selection screen I have not entered any values and executed the program. I am not getting any result. When I debug that, sy-subrc is 4 at above select statement. But table has records.
    If am removing the "lifnr = s_lifnr " condition in select then select is returning values.
    I am not getting where I made the mistake. Please suggest.
    Thank you
    Hanu

    Hi,
    The problem here with where condition select option lifnr = s_lifnr.
    Use below select query.
    SELECT * FROM bsak INTO TABLE lt_bsak
    WHERE bukrs IN s_bukrs
        AND lifnr     IN s_lifnr
        AND gjahr   IN s_gjahr
        AND budat  IN s_budat
        AND saknr  IN s_saknr.
    s_lifnr is a select option and you are passing it as parameter lifnr = s_lifnr.
    if you want to pass this s_lifnr as single vale then pass in below mentioned way.
    lifnr = s_lifnr-low
    BR,
    Vijay

  • CSS state sync questions

    I learned from cisco doc that the CSS stat are exchanged in real time.
    " For new flows, CSSs exchange flow states in real time over the ISC links. For existing flows, CSSs exchange flow states at boot-up time and at VIP redundancy failover.
    I"
    http://www.cisco.com/en/US/partner/products/hw/contnetw/ps792/products_configuration_guide_chapter09186a00801ef2a1.html
    Does this mean that once a "flow" is created in a primary box, the state information will be replicated to the backup one? Are there any delay in the state replication? Is there any routine state database sync in addition to the real time replication?

    as mentioned in the doc, when the flow is created on the active box, the flow info is immediately forwarded to the standby device.
    Full database synchronisation will only occurs after failover of one of the two devices.
    Regards,
    Gilles.

  • Peformance question TKPROF/Autotrace Cost High when using index why?

    I'm going through a legacy database application to do some application code performance tuning of the PL/SQL.
    I am constrained from changing the code logic so I can only add indexes and hints. As I identify full-table-scans I'm using hints to force the code to use the index and now the Cost is Higher than with full table scans. Though the application code runs in batch mode and processes a lot of records.
    Can anyone provide any insight into why the cost goes up when using Hints in the SQL?
    I have additional testing to do though I just wanted to pose the question.

    Firstly, the cost can be less for a full table scan because with a full table scan Oracle can do multi block IO with a full scan. So reading a large amount of data from a table will go much faster if the table is full scanned as opposed to accessed by an index (your forcing the query with a hint can actually be extremely detrimental to the query).
    Secondly, if you are not allowed to make any code changes, i'd recommend not taking the path you are currently on (adding hints). That may be warranted in a few situations, but likely not many assuming you have accurate statistics set up on your database.
    Here's an article that deals with full table scans ....
    http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:9422487749968
    Hope that Helps.

  • Compare columns SQL select statement (easy question)

    Hi,
    I need to write a query which compares every account's products to see if they match up with a corresponding service. Here is an example of my dataset.
    Account_no products service
    0001 prod1, prod2,prod3 serv1, serv2,serv3
    0002 prod1,prod2,prod4 serv1,serv2,serv3,serv4
    0003 prod1,prod2 serv1,serv2
    I would like to pick up either a service or a product that does not have a matching pair, so in this example it would pick up account_no 0002 and shoe me the products, services so I can see which one doesn't have a match.
    Thanks in advance for any help.
    Joe

    select * from table_name
    where to_number(replace(replace(replace(products,'prod',''),',',''),' ','')) <>
    to_number(replace(replace(replace(services,'prod',''),',',''),' ',''));

  • Peformance Question

    Hi all,
    I have some views and I have to create those views using not less then 10 tables. As each column is a lookup column. For each column I have a query Following is an example with one column. Can anybody guide me how I can increase the performance using query as column or joining with the table(s) in from and putting a outer join query.
    1. select
    (select desc
    from lookuptable
    where lookupid = b.lookupid) as column1
    from main_table b;
    2. select a.desc
    from lookuptable a, main_table b
    where a.lookupid = b.lookupid;
    I would like to know which of the case will give better performance.
    Thanks in advance
    Ghulam Mustafa Butt

    If you take as an example a case where the lookup table has very few rows and the main table has relatively many rows, then for the second query the optimizer might choose to use a hash join instead of a nested loop join, if it would be more efficient to do so. In the first query I believe that a nested loop will always be performed.

  • Financial statement version without data?

    Hi,
    we use F.01 (RFBILA00) to show the Financial statement.
    Question: Is there any Program / tcode etc. to show only the
    financial statement version without any data, only the structure?
    Thanks,
    Regards, Dieter

    Hi!
    Press F1 button on the financial statement structure field. On the popup, press button Customizing. This will guide you to the structure.
    Regards
    Tamá

  • Bogus Invalid Object in MERGE Statement

    Let me begin by saying that I have been working with MERGE since its inception, and I am familiar with the fundamental gotcha's. This problem is more inexplicable. (It's one of those things that I expect, when someone explains it, will be a DOH! moment.)
    I am building a one-time conversion script to merge an existing User table with a new User table. Since I am only in the development mode, I didn't want to modify the true table yet. So I made a copy of the table to work with, using the following familiar
    syntax.
    SELECT *
    INTO uam.User2
    FROM uam.[User]
    Imagine my surprise when the MERGE statement refused to recognize uam.User2 - although it recognizes uam.[User] just fine.
    In the interests of competeness, here is the MERGE Statement in question.
    MERGE  uam.[User2]
    as tgt
    USING (SELECT
    UserID
    ,FirstName
    ,LastName
    ,CompanyID
    ,AuthenticationID
    ,isActive
    ,PrimaryEmailID
    ,CreatedByUserName
    ,CreatedByDtim
    ,@User
    _User
    ,GETDATE()
    _GETDATE
    FROM #User
    ) as src
      ON tgt.UserID = (src.UserID * -1)
    WHEN NOT MATCHED
    THEN
    INSERT
    (FirstName
    ,LastName
    ,CompanyID
    ,AuthenticationID
    ,isActive
    ,PrimaryEmailID
    ,CreatedByUserName
    ,CreatedByDtim
    ,LastUpdatedUserName
    ,LastUpdatedDtim
    VALUES
    (src.FirstName
    ,src.LastName
    ,src.CompanyID
    ,src.AuthenticationID
    ,src.isActive
    ,src.PrimaryEmailID
    ,src.CreatedByUserName
    ,src.CreatedByDtim
    ,_User
    ,_GETDATE
    OUTPUT INSERTED.UserID
    ,tgt.UserID
    INTO #UserMapping;
    The procedure refuses to run, flagging the tgt.UserID as 
    Msg 4104, Level 16, State 1, Line 140
    The multi-part identifier "tgt.UserID" could not be bound.
    SSMS also flags the uam.[User2] on the MERGE line as "Invalid object name 'uam.User2'" on mouse-over.
    A few notes:
    I have a SELECT * FROM uam.User2 immediately before this MERGE, and it works just fine. And yes, it returns a UserID column.
    If I change the name from uam.User2 to uam.[User], it works just fine.
    I know the JOIN is a little strange (I really wanted just an INSERT where I could see the original UserID and the newly inserted UserID together, and INSERT will not let me OUTPUT directly from a table - hence the MERGE), but I also tried it with a straight-up
    tgt.UserID = src.UserID. Nothing changed about the errors.
    I also went back and re-created the uam.User2 table directly from the code that built uam.[User]. Nothing changed.
    I'm flummoxed. This has all the earmarks of a "well-that-was-dumb" coding error, but for the life of me I cannot see what would change between using these two tables, since one is a copy of the other...
    Any insight would be much appreciated!
    Duncan Davenport

    OK, I have it.
    DOH!  (told ya)
    So, while intellisense (typically) flags this table as not existing, that's just Intellisense doing the nonsense it always does. This obfuscated the ACTUAL error - which was the wrong schema defined in the output clause. The error itself pointed at the wrong
    line (nothing new there either). Once I fixed the OUTPUT clause, everything worked as expected - although SSMS is still putting squiggly red lines under everything that is working anyway. Yeah, we've all seen THAT behavior - no big deal.
    Anyway, that's the answer. It's magic - in that the error messages specialize in misdirection :)...
    Closing this. (I wonder if I get credit for answering my own question?)

  • Question about BlazeDS Channel internals

    There is much useful information available about how an application developer would use BlazeDS to implement their application, but there is a shortage of information about how BlazeDS is implemented.  There are very general architecture diagrams, but no information on the actual network technologies employed.  This information is essential for forming estimates of the server hardware requirements of a design.  The alternative is to build the application one way, and then discover the performance characteristics afterwards.
    For one feature of my application, the ideal structure would be to give the clients and mx.Consumer to receive non-polling stream of changes replicated from the database.  In this particular feature, there would be no subtopics, each client would receive the same data.  The question is would BlazeDS/Flex give each client 1 persistent socket to support the stream.  If this is the case, then this design poses a very significant load on the server.  It makes it easy for the developer, because he writes to only one topic, but if under the covers, the server is writing to one socket for each client.  It will require a lot of hardware.
    Or, to state the question another way, would BlazeDS/flex use multicast, when there is a client Consumer subscribing to a topic, with no subtopics?

    I have just found one clear statement in the BlazeDS documentation with regard to sockets when streaming:
    "The Servlet API uses blocking IO so as with long polling above, you must set a configured upper bound on the number of streaming connections you allow. Clients that exceed this limit are not able to open a streaming connection and will fall back to the next channel in their channel set."
    BlazeDS Developer Guide, page 50.
    This I did not expect, since non-blocking IO has been part of Java for over 5 years in the NIO package.  If I were to deploy BlaseDS on an Intel sized box, I suspect the blocking IO would limit me to maybe 300 concurrent users.  If this is true, it means that both streaming and long polling are unusable for almost any application on the public web.
    Maybe the only option is to write a server in Java NIO that communicates with Flash Sockets.
    Did I miss something?

  • Prepared Statement Insert and null handling

    This is my statement and questions after the statement I will give my questions
    StringBuffer sql = new StringBuffer();
    sql.append("INSERT INTO CSD.TCLAIM");
    sql.append(" (BENEFIT_REQUEST_ID,BRLI_NB,BRLI_VOID_IN,BILLING_END_DT,CLIENT_ID,");
    sql.append(" CDH_BENEFICIARY_ID,PT_BENEFICIARY_ID)");
    sql.append(" VALUES ");
    sql.append("(" + claim.getBrt() + "," + claim.getBrli() + "," + claim.getBrliVoid() + "," + claim.getBillingEndDate() + "," + claim.getClientID() + ",");
    sql.append(claim.getCdhBeneID() + "," + claim.getPtBeneID() +")");
    String query = sql.toString();
    PreparedStatement statement = cpConn.prepareStatement(query);
              statement.executeUpdate();
    T
    I am not using setString() or setInt(). The string columns (CDH_BENEFICIARY_ID) does not contain the single quote and insert fails. Is there any way to insert the single quote without calling a method like formatAsString() ?
    Next question is column like CLIENT_ID which is defined in the database as integer can contain null. How do I handle those columns. Do I have to do anything special when I encounter a null in an int or double columns.
    I am using JDBC 2.0 and UDB in SP environment. I have seen people wrap some columns to Wrapper class and do something like this while reading from database
    claim.setClientID(new Integer(rs.getInt("CLIENT_ID")));
    if (resultset.wasNull) {claim.setClientID(null)) };
    Is there a beter way?
    This will force us to define claim.client_id as Integer. I want to define client_id as int and handle null values.
              

    Is there any way to insert the single quote You escape a single quote by replacing each occurrance with two single quotes. Presumably your strings already have single quotes around - if not you need to add them.
    ...can contain null. How do I handle those columns...update mytable set client_id=null where....
    insert into mytable (client_id) values(null)
    Is there a beter way?Not really.

  • Financial Statement and Alternative Account Number (China)

    Hi all,
    I have created a nice financial statement based on "normal" GL account number, and through this I can have a nice formatted balance sheet and profit and loss account.
    For china, I need the financial statement with the alternative account number displayed.  For example: My normal GL Account is 181000, and alternative account number is 10010101 .
    During running the F.01 - Balance sheet, I check the options of "alternative account number" under the tab of special evaluations, but the output of the balance sheet and profit and loss does not give me a nice format.
    All of the accounts are displayed under section Account not assigned (This is because alternative account number is 10010101 is not assigned to the financial statement version).
    Could anyone advise how to overcome this problem?
    Thanks.

    Ok ...
    I half way solve my problem with the following reference:
    http://sap.ittoolbox.com/groups/technical-functional/sap-acct/country-specific-coa-1453275
    There is another issue of my Financial statement:
    The following is my scenario:
    I have Operational Chart Of Account, OCA1, and GL's are as followings:
    GL1000 linked with alternative GL account (GL9001 - Chart of account - ACA1)
    GL2000 linked with alternative GL account (GL9002 - Chart of account - ACA1)
    GL3000 linked with alternative GL account (GL9003 - Chart of account - ACA1)
    GL4000 No link to any alternative GL (because does not use or need this)
    My Financial statement version is FSV9, made up (must be, based on my testing) using GL Account (which are GL9001 and GL9002) and chart of account is ACA1.
    During the financial statement F.01, the GL4000 ends up with the following message at the bottom of the financial statement: <b>No alternative acct no.maintained for G/L acct 4000 in co.code ....</b>
    Note: GL4000 does not have any balances.
    Note: If GL4000 has balances, it is displayed under un-assigned section, and the value does not affect the profit and loss od the statement.
    Question: How can I solve the issue:
    1) Do not display the GL4000, which does not have alternative GL account.

  • JBO-27122:SQL error during statement preparation + ORA-01006:bind variable not exists

    (1) I have built a BC4J View called CallFunctionView which acts as a view i used to call existing PL/SQL functions. My implementation servlet code is presented with the following structure:
    public class MyServlet extends HttpServlet {
    // Get vector element to perform validation for rule 1 and rule 2
    for (int i = 0; i < MyVector.size(); i++) {
    MyVectorRow MyRow = (MyVectorRow) MyVector.elementAt(i);
    MyRow.checkRule1(am, i);
    MyRow.checkRule2(am, i);
    (2) Both checkRule1 and checkRule2 will call the ViewObject CallFunctionView. Related codes for checkRule1 and checkRule2 are listed as follows:
    public void checkRule1(ApplicationModule am, int intRowIndex)
    throws JboException, Exception {
    ViewCdCallFunctionImpl vo = (CallFunctionViewImpl) am.findViewObject("CallFunctionView");
    if (vo == null) {             
    throw new JboException("View Object is null!");
    vo.setQuery("SELECT PKG1.MyFunctionOne(?,?,?,?) FROM DUAL");
    vo.setWhereClauseParam(0, param1); // param1 is string
    vo.setWhereClauseParam(1, param2); // param2 is string
    vo.setWhereClauseParam(2, param3); // param3 is String.valueOf(int)
    vo.setWhereClauseParam(3, param4)); // param4 is String.value Of(int)
    vo.executeQuery(); <- Point of exit where my mentioned error occurs at the second loop
    public void checkRule2(ApplicationModule am, int intRowIndex)
    throws JboException, Exception {
    ViewCdCallFunctionImpl vo = (CallFunctionViewImpl) am.findViewObject("CallFunctionView");
    if (vo == null) {             
    throw new JboException("View Object is null!");
    vo.setQuery("SELECT PKG2.MyFunctionTwo(?,?,?,?) FROM DUAL");
    vo.setWhereClauseParam(0, param1); // param1 is string
    vo.setWhereClauseParam(1, param2); // param2 is string
    vo.setWhereClauseParam(2, param3); // param3 is String.valueOf(int)
    vo.setWhereClauseParam(3, param4)); // param3 is String.valueOf(int)
    vo.setWhereClauseParam(4, (blnYes)?"Y":null);
    vo.setWhereClauseParam(5, (blnYes)?"Y":null));
    vo.executeQuery();
    (3)The called functions are from different package and with different parameters. For the loop i = 0, no error occurs and both functions generates expected result. For execution of the first function in the second loop (when i = 1), error occurs with the following messages(JBO-27122: SQL error during statement preparation. + java.sql.SQLException: ORA-01006: bind variable does not exist):
    oracle.jbo.SQLStmtException: JBO-27122: SQL error during statement preparation. Statement: SELECT PKG1.MyFunctionOne(?,?,?,?) FROM DUAL
         void oracle.jbo.server.QueryCollection.executeQuery(java.lang.Object[], int)
         void oracle.jbo.server.ViewObjectImpl.executeQueryForCollection(java.lang.Object, java.lang.Object[], int)
         void oracle.jbo.server.ViewRowSetImpl.execute(boolean, boolean)
         void oracle.jbo.server.ViewRowSetImpl.executeQuery()
         void oracle.jbo.server.ViewObjectImpl.executeQuery()
         void MyPkg.objects.MyVectorRow.checkRule1(oracle.jbo.ApplicationModule, int)
         void MyPkg.servlet.MyServlet.doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         void javax.servlet.http.HttpServlet.service(com.evermind.server.http.EvermindHttpServletRequest, com.evermind.server.http.EvermindHttpServletResponse)
         void javax.servlet.http.HttpServlet.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         void javax.servlet.http.HttpServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
         void com.evermind.server.http.ServletRequestDispatcher.invoke(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
         void com.evermind.server.http.ServletRequestDispatcher.forwardInternal(javax.servlet.ServletRequest, javax.servlet.http.HttpServletResponse)
         boolean com.evermind.server.http.HttpRequestHandler.processRequest(com.evermind.server.ApplicationServerThread, com.evermind.server.http.EvermindHttpServletRequest, com.evermind.server.http.EvermindHttpServletResponse, java.io.InputStream, java.io.OutputStream, boolean)
         void com.evermind.server.http.HttpRequestHandler.run(java.lang.Thread)
         void com.evermind.util.ThreadPoolThread.run()
    ## Detail 0 ##
    java.sql.SQLException: ORA-01006: bind variable does not exist
         void oracle.jdbc.dbaccess.DBError.throwSqlException(java.lang.String, java.lang.String, int)
         void oracle.jdbc.ttc7.TTIoer.processError()
         void oracle.jdbc.ttc7.Oall7.receive()
         void oracle.jdbc.ttc7.TTC7Protocol.doOall7(byte, byte, int, byte[], oracle.jdbc.dbaccess.DBType[], oracle.jdbc.dbaccess.DBData[], int, oracle.jdbc.dbaccess.DBType[], oracle.jdbc.dbaccess.DBData[], int)
         int oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(oracle.jdbc.dbaccess.DBStatement, byte, byte[], oracle.jdbc.dbaccess.DBDataSet, int, oracle.jdbc.dbaccess.DBDataSet, int)
         void oracle.jdbc.driver.OracleStatement.doExecuteQuery()
         void oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout()
         int oracle.jdbc.driver.OraclePreparedStatement.executeUpdate()
         java.sql.ResultSet oracle.jdbc.driver.OraclePreparedStatement.executeQuery()
         void oracle.jbo.server.QueryCollection.executeQuery(java.lang.Object[], int)
         void oracle.jbo.server.ViewObjectImpl.executeQueryForCollection(java.lang.Object, java.lang.Object[], int)
         void oracle.jbo.server.ViewRowSetImpl.execute(boolean, boolean)
         void oracle.jbo.server.ViewRowSetImpl.executeQuery()
         void oracle.jbo.server.ViewObjectImpl.executeQuery()
         void MyPkg.objects.MyVectorRow.checkRule1(oracle.jbo.ApplicationModule, int)
         void MyPkg.servlet.MyServlet.doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         void javax.servlet.http.HttpServlet.service(com.evermind.server.http.EvermindHttpServletRequest, com.evermind.server.http.EvermindHttpServletResponse)
         void javax.servlet.http.HttpServlet.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         void javax.servlet.http.HttpServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
         void com.evermind.server.http.ServletRequestDispatcher.invoke(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
         void com.evermind.server.http.ServletRequestDispatcher.forwardInternal(javax.servlet.ServletRequest, javax.servlet.http.HttpServletResponse)
         boolean com.evermind.server.http.HttpRequestHandler.processRequest(com.evermind.server.ApplicationServerThread, com.evermind.server.http.EvermindHttpServletRequest, com.evermind.server.http.EvermindHttpServletResponse, java.io.InputStream, java.io.OutputStream, boolean)
         void com.evermind.server.http.HttpRequestHandler.run(java.lang.Thread)
         void com.evermind.util.ThreadPoolThread.run()
    I have tried commented either MyRow.checkRule1 or MyRow.checkRule2 for execution. No error occurs for that. The problem occurs when i put the two together in a loop ... the parameter number for Pkg1.MyFunctionOne is less than Pkg2.MyFunctionTwo, which corresponds to the error message 'Bind variable does not exist' ... any cache for calling the function that causes the error at running the vo.executeQuery statement?
    Question: Does anyone has any ideas about the error origin and solution? (It is very important to me because i still have several check rules in addition to those mentioned 2 rules.)
    Thanks for replying!

    Oic ... thanks for your help, but i find a strange thing. No error message is prompted when i break the loop as follows:
    // Get vector element to perform validation for rule 1 and rule 2
    for (int i = 0; i < MyVector.size(); i++) {
    MyVectorRow MyRow = (MyVectorRow) MyVector.elementAt(i);
    MyRow.checkRule1(am, i);
    // Get vector element to perform validation for rule 1 and rule 2
    for (int i = 0; i < MyVector.size(); i++) {
    MyVectorRow MyRow = (MyVectorRow) MyVector.elementAt(i);
    MyRow.checkRule2(am, i);
    It works, but quite strange ... is it a bug for calling the interface setWhereClauseParam(int, object)? As long as all the bind variables have value (your bind-var array is filled perhaps due to previous setWhereClauseParam, the query will work. What's critical is you get the right query every time :)

Maybe you are looking for

  • Dealing with floating point numbers...

    Please I would be very happy if someone could help me on getting something right. When ever I divide 2 numbers and the denominator is greater than the numerator, it results in the number zero(0); I want to be able to plot a financial histogram on a c

  • Service SystemInfo browser query ..

    Hi All, Had to browse the user roles on two MIIs 14.0.2 Build 82. (QA/DEV instances). While using: [Server][port]/XMII/Illuminator?Service=SystemInfo&Mode=RoleList&Content-Type=text/xml One server brings me the complete list, the second one misses ap

  • How to time dimension

    How do you link a time dimension to the fact table? If the time dimension has a sequence as the PK then the following columns: year month quarter day time etc.. How is the fact table connected to the time dimension if the fact table has the primary k

  • When I try to login to iMessage, I get the error: The server encountered and error processing registration.  Please try again later.

    I've been getting this error for two weeks.  I've tried rebooting the computer, resetting my network connection, and double-checking my password.  The chat function works fine on my iPad and iPhone, just not on my computer.  I have OS X 10.8.4 runnin

  • Should I first delete all saved passwords before assigning master password firefox 21

    I want to start using the 'Master Password' feature. There are a couple of hundred 'stored' passwords in the Options-Security-Saved Passwords tab so I'm wondering if it would be best to delete ALL of these before setting up a Master Password. I will