OPEN CURSOR STATEMENT

wat is the correct syntax for open cursor?do anyone provide sample code for it?

Hi,
DATA: C1 TYPE CURSOR.
OPEN CURSOR C1 FOR
     SELECT * FROM SFLIGHT WHERE CARRID = 'LH '.
http://www.sapdb.org/7.4/htmhelp/7b/0bdea252d746429420007a69bd06c7/content.htm
http://help.sap.com/saphelp_47x200/helpdata/en/f5/cbbd9f39694aa1b76759b6c801b4a1/frameset.htm

Similar Messages

  • How open cursor statement works

    hi,
    OPEN CURSOR [WITH HOLD] dbcur FOR
      SELECT result
             FROM source
             [[FOR ALL ENTRIES IN itab] WHERE sql_cond]
             [GROUP BY group] [HAVING group_cond]
             [ORDER BY sort_key].
    i want to know what does open cursor statement do, how it works,  what does dbcur contain?

    Hi,
    dbcur is cursor name gn by u....
    Its like select statement....u hav used for all entries right....so if der are 3 records in ur int table and corresponding 3 records ll be fetched in select-endselect query right.....
    here in open cursor statement u don hav INTO(destination) right
    so after opening cursor......
    FETCH NEXT CURSOR dbcur into wa1.
    FETCH NEXT CURSOR dbcur into wa2.
    FETCH NEXT CURSOR dbcur into wa3.
    wa1,wa2,wa3 ll have the 3 records....
    close cursor.....................
    Cheers,
    jose.

  • DBIF_RSQL_INVALID_RSQL in OPEN Cursor Statement

    Hi,
          I am getting DBIF_RSQL_INVALID_RSQL error with short text Error in RSQL module of database interface.
      Dump is pointing to the query " FETCH CURSOR".
    I have used following code in the logic:
    Some times only i am getting dump and some times it isworking fine can any body suggest me how to tune this code?
       OPEN CURSOR WITH HOLD s_cursor FOR
        SELECT aebeln bebelp b~zekkn
        bvgabe bgjahr bbelnr bbuzei bbewtp awaers
      FROM ekko AS a
           INNER JOIN ekbe AS b
      ON aebeln = bebeln
      WHERE ( b~bewtp = 'L'
      OR b~bewtp = 'Q' )
      AND a~ebeln IN l_r_ebeln
      AND b~belnr IN l_r_belnr.
      FETCH NEXT CURSOR s_cursor
                     APPENDING CORRESPONDING FIELDS
                     OF TABLE it_ekbe
                     PACKAGE SIZE s_s_if-maxsize.
    also please suggest me how to use for all enties with data packet size logic as in the above code?
    Thnaks & Regards,
    Vamsi

    Hi Vamsi,
    Please check Max's earlier response. You had mentioned that the problem occurs during debugging. Can you please elaborate if it only occurs during debugging or always? I'm not sure if the exception could be triggered due to implicit COMMIT as mentioned by Max. I know that SELECT-ENDSELECT during debugging can trigger a short dump due to implicit COMMIT, but I don't know if that applies also to OPEN CURSOR ... WITH HOLD (don't have a system to test this and also to check what exception is triggered during SELECT-ENDSELECT processing due to implicit COMMIT).
    For further analysis I'd recommend to carefully read the short dump and cross-check this against the system log and especially the trace file of the affected work process. As pointed out by Rob the most likely source for this exception are too many conditions in your WHERE statement. However, based on your response this doesn't seem to be the case, so by checking system log and the work process trace file you might get further information that points to more exotic causes (see e.g. OSS note [8312564|https://service.sap.com/sap/bc/bsp/spn/sapnotes/index2.htm?numm=1398802|Problems due to insufficient Nametab buffer]).
    Using the information from short dump, trace file and system log do some research in OSS for possible causes. Providing all the necessary information for forum users might be tough for the more exotic causes of this exception...
    Good luck, harald

  • Runtime Error - DBIF_RSQL_INVALID_RSQL - Too many OPEN CURSOR

    When I try to train a Decision Tree Model via an APD process in RSANWB, I get a runtime error when my model is configured with too many parameter fields or too many leaves (with 2 leaves it works, with more it fails).
    By searching SAP Notes I see that there are many references to this kind of runtime errors. But no note on occurences of it in RSANWB / RSDMWB .
    Any information on this anyone?
    Claudio Ciardelli
    Runtime Errors         DBIF_RSQL_INVALID_RSQL
    Date and Time          29.07.2005 16:19:21
    |ShrtText                                                                                |
    |    Error in RSQL module of database interface.                                                   |
    |What happened?                                                                                |
    |    Error in ABAP application program.                                                            |
    |                                                                                |
    |    The current ABAP program "SAPLRS_DME_DECISION_TREE_PRED" had to be terminated                 |
    |     because one of the                                                                           |
    |    statements could not be executed.                                                             |
    |                                                                                |
    |    This is probably due to an error in the ABAP program.                                         |
    |                                                                                |
    |Error analysis                                                                                |
    |    The system attempted to open a cursor for a SELECT or OPEN CURSOR                             |
    |    statement but all 16 cursors were already in use.                                             |
    |    The statement that failed accesses table "/BIC/0CDT000030 ".                                  |
    |    The erroneous statement accesses table "/BIC/0CDT000030 ".                                    |
    |Trigger Location of Runtime Error                                                                 |
    |    Program                                 SAPLRS_DME_DECISION_TREE_PRED                         |
    |    Include                                 LRS_DME_DECISION_TREE_PREDU06                         |
    |    Row                                     103                                                   |
    |    Module type                             (FUNCTION)                                            |
    |    Module Name                             RS_DME_DTP_EVALUATE                                   |
    |Source Code Extract                                                                               |
    |Line |SourceCde                                                                                |
    |   73|* Prepare for Data evaluation                                                               |
    |   74|  CATCH SYSTEM-EXCEPTIONS OTHERS = 15.                                                      |
    |   75|    CREATE DATA ref TYPE (i_enum_dbtab).                                                    |
    |   76|    ASSIGN ref->* TO <fs_wkarea>.                                                           |
    |   77|    ASSIGN COMPONENT gv_class_dbposit OF STRUCTURE                                          |
    |   78|                      <fs_wkarea> TO <fs_class>.                                            |
    |   79|    CREATE DATA ref TYPE TABLE OF (i_enum_dbtab).                                           |
    |   80|    ASSIGN ref->* TO <ft_data>.                                                             |
    |   81|                                                                                |
    |   82|  ENDCATCH.                                                                                |
    |   83|  IF sy-subrc = 15.                                                                         |
    |   84|*   Error on Assignment.                                                                    |
    |   85|    CALL FUNCTION 'RS_DME_COM_ADDMSG_NOLOG'                                                 |
    |   86|      EXPORTING                                                                             |
    |   87|        i_type    = 'E'                                                                     |
    |   88|        i_msgno   = 301                                                                     |
    |   89|        i_msgv1   = 'EVALUATION_PHASE'                                                      |
    |   90|      IMPORTING                                                                             |
    |   91|        es_return = ls_return.                                                              |
    |   92|    APPEND ls_return TO e_t_return.                                                         |
    |   93|    EXIT.                                                                                |
    |   94|  ENDIF.                                                                                |
    |   95|                                                                                |
    |   96|* For the un-trained Rec-Ids, evaluate.....                                                 |
    |   97|  REFRESH lt_recinp.                                                                        |
    |   98|  APPEND LINES OF i_t_records TO lt_recinp.                                                 |
    |   99|  SORT lt_recinp .                                                                          |
    |  100|* Open Cursor..                                                                             |
    |  101|  DATA: l_curs TYPE cursor.                                                                 |
    |  102|  DATA: l_psize TYPE i VALUE 10000.                                                         |
    |>>>>>|  OPEN CURSOR WITH HOLD l_curs FOR                                                          |
    |  104|   SELECT * FROM (i_enum_dbtab)                                                             |
    |  105|     WHERE rsdmdt_recid NOT IN                                                              |
    |  106|        ( SELECT rsdmdt_recid FROM                                                          |
    |  107|             (i_learn_tab) ).                                                               |
    |  108|                                                                                |
    |  109|*  Start Fetch...                                                                           |
    |  110|  DO.                                                                                |
    |  111|    FETCH NEXT CURSOR l_curs                                                                |
    |  112|      INTO CORRESPONDING FIELDS OF TABLE <ft_data>                                          |
    |  113|      PACKAGE SIZE l_psize.                                                                 |
    |  114|    IF sy-subrc NE space.                                                                   |
    |  115|      EXIT.                                                                                |
    |  116|    ENDIF.                                                                                |
    |  117|                                                                                |
    |  118|*     Process records...                                                                    |
    |  119|    LOOP AT <ft_data> ASSIGNING <fs_wkarea>.                                                |
    |  120|                                                                                |
    |  121|*     Call Prediction Function.                                                             |
    |  122|      CALL FUNCTION 'RS_DME_DTP_PREDICT_STRUCTURE'                                          |

    Hi Claudio,
    well the message is very clear and I think in your case you need to split your model into a few somehow equal models, each not having more than 2 leaves.
    Another option might be to do more things serially instead of parallel.
    Hope it helps
    regards
    Siggi

  • Open cursor for internal table

    Hi folks,
    I have a tricky question concerning the cursor function and internal tables. First of all, it is not possible to create a view. Instead I've to use a function module for extracting some data to the BI system.
    Actually most of the time I work with SELECT (for outer joins) and internal tables. At the end I have a internal table and must open an cursor. As fact, I can't open a cursor for an internal table - only database tables are allowed.
    OPEN CURSOR WITH HOLD s_cursor FOR SELECT * FROM lt_temp.
    Does someone have a clue how to solve my problem? Obviously I have to use a db table for a open cursor statement but on the same way I have to use a internal table for all my previous SELECT-statements.
    Thanks in advance for your help.
    Regards,
    Mrcl

    Why don't you use EXEC and ENDEXEC
    Check this link
    http://help.sap.com/saphelp_nw04/helpdata/EN/fc/eb3b8b358411d1829f0000e829fbfe/content.htm

  • Opened cursors

    Hello everybody,
    i need the number of opened database cursors (with the OPEN CURSOR statement) in an Abap process (programm). Does anyone know if i can get the number in Abap in runtime??
    For example something like the VBLOG table cluster.
    Regards Ioan.

    Hi , Please go throuw below info and example.
    << Moderator message - Cut and paste response from [Using a Cursor to Read Data|http://help.sap.com/SAPhelp_nw04/helpdata/en/fc/eb3b23358411d1829f0000e829fbfe/content.htm] removed. Plagiarism is not allowed in SCN >>
    Edited by: Rob Burbank on Feb 2, 2011 11:44 AM

  • Open cursors are NOT closed only by closing the ResultSet or Statement

    I've realised that the open cursors are only closed by closing the connection.
    In my example code I have for-loop with a vector of table-names. For every table-name I start a query to retrieve metainformation (row-size, column-names). Although I close the ResultSet (which automatically closes the PreparedStatement/Statement) I reached after the 150th loop a max-cursor-exception (ora-01000) ?!
    It seems that there is only the workaround to close and re-open the connection at the end of the for-loop. Which is performance-side pretty bad :-(.
    Is there really no other solution?
    Besides: does anyone know WHY the statement.close() also closes the ResultSet?? I think this is a bad design (hence to tight dependency between both classes). What if the garbage collector closes the statement (and hence to the JDOC the statement.close()-method also closes the ResultSet)? For example if a method uses a local Statement and returns a ResultSet (and the Statement-garbage is collected), then the ResultSet would cause an exception?!
    Thanks for the help in advance
    Tai

    I've realised that the open cursors are only closed by
    closing the connection.Or by closing the Statement!
    In my example code I have for-loop with a vector of
    table-names. For every table-name I start a query to
    retrieve metainformation (row-size, column-names).
    Although I close the ResultSet (which automatically
    closes the PreparedStatement/Statement) I reached
    after the 150th loop a max-cursor-exception
    (ora-01000) ?!Closing the ResutSet does not automatically close the PreparedStatement/Statement.
    >
    It seems that there is only the workaround to close
    and re-open the connection at the end of the for-loop.
    Which is performance-side pretty bad :-(.
    Is there really no other solution?
    Just explicitly close the PreparedStatement/Statement!
    Besides: does anyone know WHY the statement.close()
    also closes the ResultSet?? You need to think of a resultset as a live connection to the database.
    Consider SELECT * FROM ABIGTABLE, it would be inefficient to populate the Resultset with all of the rows (could even eat up all memory) so the first n rows are returned ( n = Statement.getFetchSize() ) and the next n rows are returned as needed.
    I think this is a bad
    design (hence to tight dependency between both
    classes). What if the garbage collector closes the
    statement (and hence to the JDOC the
    statement.close()-method also closes the ResultSet)?
    For example if a method uses a local Statement and
    returns a ResultSet (and the Statement-garbage is
    collected), then the ResultSet would cause an
    exception?!You should use a statment and resultset, read all your data into a collection or a CachedRowSet (http://www.javaworld.com/javaworld/jw-02-2001/jw-0202-cachedrow.html) then close the statment as soon as possible. Never return a resultset form your data tier: that is tight coupling between the tiers of your application!

  • Multiple statements from one connection causes ORA-0100 Maximum open cursor

    HI,
    I am creating a connection and trying to run 2 statements off the connection. The connection has autocommit as false as I want to commit only after the second statement commits successfully. Upon executing the second statement, I get the ORAC-0100: Maximum open cursor error. I have verified that I have closed all the Preparedstatement and ResultSet in the first statement.
    My code looks like this:
    Connection myConn = DriverManager.getConnection(jdbc:oracle:thin:.....); myConn.setAutoCommmit(false); Savepoint sp = myConn.setSavePoint("save1"); PreparedStatement pstmt = myConn.prepareStatement(...) ResultSet rs = pstmt.executeQuery(); while (rs.next()){ ..... } rs.close(); pstmt.close(); rs=null; pstmt=null; Statement stmt2 = myConn.createStatement(); sql="DELETE FROM TempTable..."; stmt2.executeUpdate(sql);
    I put a breakpoint just before stmt.executeUpdate and verified the open cursor are below the threshold. And as soon as I execute stmt2.executeUpdate,I get the maximum cursor error. Also, I noticed that the number of open cursors jumps to the limit after stmt2.executeUpdate(sql) as verified by the following sql
    select s.sid, s.username,  a.value from v$sesstat a, v$statname b, v$session s where a.statistic# = b.statistic#  and s.sid=a.sid and b.name = 'opened cursors current' and s.username = 'user_name';
    Am I doing something wrong? Is there a better way to execute multiple statements using the same connection and commiting only after the last statement has executed successfully?

    I believe you need to close your connection via myConn.close() as follows:
    PreparedStatement pstmt=null;
    ResultSet rs=null;
    Connection myConn=null;
    try{
    myConn= //put code to get connection in this statement here
    pstmt = myConn.prepareStatement(...)
    rs = pstmt.executeQuery();
    while (rs.next()){
    }finally{
    if(rs!=null)
    rs.close();
    if(pstmt!=null)
    pstmt.close();
    if(myConn!=null)
    myConn.close();
    }

  • Is there any alternative statement for OPEN CURSOR?

      OPEN CURSOR WITH HOLD l_cursor FOR
              SELECT paledger vrgar versi perio paobjnr pasubnr belnr posnr
                             hzdat usnam gjahr perde wadat fadat budat altperio papaobjnr
                            papasubnr kndnr artnr fkart frwae kursf kursbk kurskz rec_waers
                           kaufn kdpos rkaufnr skost prznr bukrs kokrs werks gsber vkorg
                         vtweg spart hrkft plikz kstar pspnr kstrg rbeln rposn sto_belnr
                         sto_posnr prctr pprctr rkestatu timestmp copa_awtyp copa_aworg
                     copa_bwzpt copa_awsys ktgrd kmhi01 kmhi02 kmhi03 hie04 hie05
                     hie06 hie07 prdha ww003 kunwe pstyv ww150 vsart ww152 ww153
                     ww154 ww155 crmelem ww156 ww157 vbund vv002_me vv001_me vv003_me
                     vv002 vv070 vv071 vv072 vv073 vv074 vv075 vv076 vv077 vv078
                     vv079 vv080 vv081 vv095 vv096 vv040 vv104 vv001 vv003 vv004
                     vv028 vv105 vv150 vv151 vv152 vv153 vv154 vv155 vv038 vv068
                     vv030 vv156 vv157 vv158 vv159 vv160 vv161 vv162 vv035 vv166
                     vv167 vv168 vv169 vv170 vv171 vv172 vv163 vv164 vv165 vv045
                     vv046 vv047 vv059 vv031 vv032 vv039 vv173 vv195 vv194 vv193
                     vv192 vv191 vv184 vv185 vv186 vv187 vv188 vv189 vv190 vv174
                     vv175 vv176 vv177 vv178 vv179 vv180 vv181 vv182 vv183
              FROM (l_table)                                    "ce1na01
              WHERE  paledger IN r_curr_ty
              AND   vrgar IN r_record
              AND   perio EQ lv_period.
    *  Fetch in Packets of 10000
        DO .
          FETCH NEXT CURSOR l_cursor
            INTO TABLE lt_data
            PACKAGE SIZE 10000.
    *  No More Data
          IF NOT sy-subrc IS INITIAL.
            CLOSE CURSOR l_cursor.
            EXIT.
          ENDIF.
         ENDDO.
    This is my current code. while executing it is taking more time so we need optimize this statement. Could you please suggest me.

    No.

  • How to use open cursor and iner join in one statement

    Hello All,
    Could any one post the code for the below question?
    How to use open cursor and iner join in one statement
    Regards,
    Lisa

    OPEN CURSOR c FOR SELECT     carrid connid fldate bookid smoker
                        FROM     sbook innerjoin shook
                        ORDER BY carrid connid fldate smoker bookid.
    Pls reward if helpful.

  • Oracle and "Maximum open cursors exceeded"

    Hi,
    I am using Weblogic 7.0sp2 with Oracle 9.2.0. Since we are using manual JTA
    transactions and the 9.2 drivers are buggy in that respect, we are using the
    9.0.1 thin drivers delivered with weblogic.
    The problem I have is that after a while, we get the now classic "Maximum open
    cursors exceeded" error on connections from our connection pool (used through
    a
    TX datasource). I have of course checked all our JDBC code and it is fine. We
    do not leave any statement/connection open. In fact, I am certain that the
    problem is not caused by our applicative code.
    The reason I am so positive is that the numbers of open (cached) cursors is
    growing, even though there is no activity on our application (I mean no
    activity at all). The number of cursors is regurlarly increasing by one
    every 5 minutes until it reaches the maximum allowed for a session.
    I have listed the statements corresponding to the opened cursors (they
    do not belong to our code, as you might have guessed):
    SELECT sysdate, user from dual
    select longdbcs from javasnm$ where short = :1
    select longname from javasnm$ where short = :1
    As you can see, there are only three different statements. You can get
    the statements from the system view v$open_cursor for a given session
    but it will only give one row per different statement. If you want to know
    the # of opened cursors in your cursor, use v$sesstat with statistic# = 3
    (opened cursor current).
    I suspect something is wrong in the connection testing done by weblogic
    for the pool (I have activated test on reserved connections and test table
    name is "dual") that leaves a resultset/statement behind. What is weird
    though is that the refresh period is still 0 (not 5 minutes as you would
    expect from the cursor growth rate...).
    I would not say that it is an Oracle bug (as stated in some BEA FAQ I read)
    since our application JDBC code does not exhibit the same problem. The
    problem appeared with recent version of WebLogic for which the session
    cursor cache is enabled, I suppose for performance reasons - this
    is set by isssuing "ALTER SESSION SET SESSION_CACHED_CURSORS = ...".
    Talking about this, does anybody know to which value WebLogic sets this
    parameter when intializing the connection (this is neither
    documented/configurable)?
    Up to now, I have come up with possibly two workarounds, neither of which
    is satisfying:
    - resetting the pool from time to time
    - issuing "ALTER SESSION SET SESSION_CACHED_CURSORS = 0" when I get a
    connection from the pool. I have not tested this one personally (read
    in a newsgroup that someone else did successfully) but it is supposed
    to reset the cursor cache that is causing the trouble.
    Any help will be greatly appreciated,
    Regards,
    Thierry.

    Thierry Rouget wrote:
    Hi,
    I am using Weblogic 7.0sp2 with Oracle 9.2.0. Since we are using manual JTA
    transactions and the 9.2 drivers are buggy in that respect, we are using the
    9.0.1 thin drivers delivered with weblogic.
    The problem I have is that after a while, we get the now classic "Maximum open
    cursors exceeded" error on connections from our connection pool (used through
    a
    TX datasource). I have of course checked all our JDBC code and it is fine. We
    do not leave any statement/connection open. In fact, I am certain that the
    problem is not caused by our applicative code.
    The reason I am so positive is that the numbers of open (cached) cursors is
    growing, even though there is no activity on our application (I mean no
    activity at all). The number of cursors is regurlarly increasing by one
    every 5 minutes until it reaches the maximum allowed for a session.
    I have listed the statements corresponding to the opened cursors (they
    do not belong to our code, as you might have guessed):
    SELECT sysdate, user from dual
    select longdbcs from javasnm$ where short = :1
    select longname from javasnm$ where short = :1
    As you can see, there are only three different statements. You can get
    the statements from the system view v$open_cursor for a given session
    but it will only give one row per different statement. If you want to know
    the # of opened cursors in your cursor, use v$sesstat with statistic# = 3
    (opened cursor current).
    I suspect something is wrong in the connection testing done by weblogic
    for the pool (I have activated test on reserved connections and test table
    name is "dual") that leaves a resultset/statement behind. What is weird
    though is that the refresh period is still 0 (not 5 minutes as you would
    expect from the cursor growth rate...).
    I would not say that it is an Oracle bug (as stated in some BEA FAQ I read)
    since our application JDBC code does not exhibit the same problem. The
    problem appeared with recent version of WebLogic for which the session
    cursor cache is enabled, I suppose for performance reasons - this
    is set by isssuing "ALTER SESSION SET SESSION_CACHED_CURSORS = ...".
    Talking about this, does anybody know to which value WebLogic sets this
    parameter when intializing the connection (this is neither
    documented/configurable)?
    Up to now, I have come up with possibly two workarounds, neither of which
    is satisfying:
    - resetting the pool from time to time
    - issuing "ALTER SESSION SET SESSION_CACHED_CURSORS = 0" when I get a
    connection from the pool. I have not tested this one personally (read
    in a newsgroup that someone else did successfully) but it is supposed
    to reset the cursor cache that is causing the trouble.
    Any help will be greatly appreciated,
    Regards,
    Thierry.Hi. We don't make those queries either. I suspect they are internal to the
    oracle driver. One thing you can try is to set the size of the pool's
    statement cache to zero. Oracle will retain cursors for every statement we
    cache. The alternative is also to tell the DBMS to allow a given session
    more cursors.
    Joe

  • Open cursors problem- j2ee + oracle 10g

    Hi,
    I am using EJB on sunOne application server 8.1., Oracle 10g DB.
    EJB container connects to Oracle DB through a set of connection pools.
    BMP for all entity beans.
    I have about 160 PL/SQL functions that make up the business logic of the online application. everytime the application runs, I get an increasing number of open cursors, including some of the ones that are explicitly closed within PL/SQL (inspection with sys.v_$open_cursor).
    I made sure all CallableStatements, PreparedStatements, RecordSets within the beans are closed and set to NULL. All PL/SQL functions use explicit cursors, so every select statement is managed within a cursor which is explicitly closed when the function finishes with it.
    From v$open_cursor, I identified the sessions with the cursors still open, and issued (ALTER SYSTEM KILL SESSION �sid, #serial�) for each of the sessions (this is done via a PL/SQL function for all inactive sessions).
    These sessions have state INACTIVE, and wait_class IDLE. This has Killed all sessions, but I was not able to use the application anymore. I suspect by killing those sessions we have also caused the connections between EJB container and the Oracle DB. The only way to use the application now is to stop and restart the sunONE domain � this is very inconvenient.
    Has anyone encountered a similar problem? any suggestions to reduce or eliminate the open cursors number? Please help.
    Thank you all

    Maybe you can try to have a smaller steady-pool-size and idle-timeout-in-millis for your connection pools.
    Also, if that's at all possible, have smaller number of connection pools being shared by more apps.
    Just my 2c.
    thanks.

  • Open cursors and shared cached cursors

    Hi
    In addm report i found below recommendation, before any change in parameter i want to know about those parameters, is there any thumb rule for this parameters,
    is there any drawback if i increase those parameters.
    FINDING 7: 2.1% impact (10693 seconds)
    Soft parsing of SQL statements was consuming significant database time.
    RECOMMENDATION 1: Application Analysis, 2.1% benefit (10693 seconds)
    ACTION: Investigate application logic to keep open the frequently used
    cursors. Note that cursors are closed by both cursor close calls
    and
    session disconnects.
    RECOMMENDATION 2: DB Configuration, 2.1% benefit (10693 seconds)
    ACTION: Consider increasing the maximum number of open cursors a
    session
    can have by increasing the value of parameter "open_cursors".
    ACTION: Consider increasing the session cursor cache size by
    increasing
    the value of parameter "session_cached_cursors".
    RATIONALE: The value of parameter "open_cursors" was "300" during the
    analysis period.
    RATIONALE: The value of parameter "session_cached_cursors" was "20"
    during the analysis period.
    Thanks and Regards
    Jafar

    Jaffy
    Your system suffers from soft parsing (according to ADDM), therefore:
    - Increasing the value of open_cursors has no impact on soft parsing (only up to 9.2.0.4 open_cursors had a direct impact on that for PL/SQL programs).
    - Increasing the value of session_cached_cursors might help reducing soft parsing. If it helps or not is really dependent from the application.
    ADDM is probably advising to increase open_cursors as well, because the database engine will keep cursors open even if the application closes them.
    HTH
    Chris
    PS: cursor_sharing might be helpful to reduce hard parses. It has no impact on soft parses... So, forget the hint about it.

  • Invalid Cursor state Exception  -  Help required

    Hi,
    I'm having a web page(JSP), which is making use of 3 ResultSet objects. Using the first two, i'll populate two different Drop down list, with values from database(Access) while loading the page for first time.
    Now if the user select any value from any (or both) of drop down list and clicks submit, i need to display all values in database, meeting the criteria from first & second drop down list. For this selection, i'm using the third ResultSet variable. While executing the query, i'm sure that 3rd ResultSet is returning some value. But when i try to retrieve the value to a string variable, i'm getting the Invalid cursor state exception.
    Throughout the page, i haven't closed any of the ResultSet. When i closed the first and second ResultSets in the third function(where 3rd ResultSet is used), i'm not getting any value. Its returning like ResultSet closed.
    Please help me to get this solved. It's very urgent because without this, i cannot proceed further. Please share your ideas.
    Thanks in advace for your valuable help

    If you open a new resultset within the same statement, all previously opened will be closed.
    Read the API docs, luke.

  • Invalid cursor state when trying to insert record

    Hi everyone!
    I'm using JDBC-ODBC bridge to connect to a mySql database, which works fine. Then I try to insert new records, but this only works for the first record in the table.
    When there is already a record in the table, I always get "[Microsoft][ODBC Driver Manager] Invalid cursor state" when calling the updateRow()-method of the result set.
    Here is my code:            // open db connection
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                Connection conn = DriverManager.getConnection("jdbc:odbc:TTManager", "xxxx", "xxxx");
                // Prepare SQL statement
                java.sql.Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
                ResultSet result = stmt.executeQuery("SELECT * FROM Player");
                result.moveToInsertRow();Then all fields are filled in this manner:            result.updateString("Name", name);And finally the insertRow should be written to the db:            result.insertRow();But at this point it gives the mentioned error, including these messages:         at sun.jdbc.odbc.JdbcOdbcResultSet.setPos(JdbcOdbcResultSet.java:5272)
            at sun.jdbc.odbc.JdbcOdbcResultSet.insertRow(JdbcOdbcResultSet.java:4132)Since I'm very unexperienced with Java, I guess (or hope^^) it's just some stupid beginner's mistake.
    Oh, almost forgot to mention: The new record's data doesn't violate any unique-constraints on the table, all fields are explicitely filled and all variable's data types are matching their according field types!
    Any help would be appreciated!
    reinski

    Ok, I needed to help myself and this is what I found out:
    If the table already contains records, it is not enough to doresult.moveToInsertRow();but I must beresult.last();
    result.moveToInsertRow();I didn't find any explanation and even the code examples from the Sun tutorial don't mention this, so I guess it's a bug occurring in my poor IT environment: DB server running mySQL 5.0.0-alpha on a P1-233-MMX w/ 64MB under WinNT4 (hey don't laugh!!^^).
    Maybe this information is of use to someone having similar problems...
    Greetings!
    reinski

Maybe you are looking for

  • How to eliminate empty lines in Flat file.

    Hi All, How to delete the empty lines in flat file,i am explaining below with data Here we have 3 fields with field lengths 30,10,34  i am checking the condition in message mapping if the middle field containing 9999999999 i am deleting the total rec

  • 5.1.2 Won't capture from DSR-11

    I performed the software updates last night; should've checked the reviews on this one first. Today, FCP won't Capture Now from my DSR-11. The capture now screen comes up black with the apple logo. Underneath it says, "Waiting for timecode. Device mu

  • Anamorphic appearing as 4x3

    Hello... I received a QT file that is supposed to be widescreen. When I import it into AE it shows up as 720x486. The guy I got it from said it was in a widescreen pixel NTSC and I need to flag it as anamorphic or widescreen. I've been fooling around

  • I configure the JServ , but Oracle HTTP Server doesn't work agian

    my Oracle HTTP Server doesn't work after i've configured the JServ by Oracle Enterprise Manager. when i run flowing command : D:\oraias\dcm\bin>dcmctl getstate -v and Error message : "ADMN-100999 Base Exception: java.lang.ClassCastException:java.lang

  • Heading elements do not appear in design view

    Hello, heading (h1, h2 ...) elements do not appear in design view. anybody know how to fix this? btw seems like DW gets worse with each successive version.