Creating process to get current row id

Hello,
I need to create a process while submitting in the process I need to have a pl/sql to update the row in the database.
When I put hard coded value it is working fine, however when I refer the current column (being selected), it doesn't fire the pl/sql.
Here is my pl/sql
update table set status='Y' where tm_id='Y';
when I used :TM_ID 9instead of Y, it dowsn't work.
How can I refer the current column in the update statement?
Thanks

Those are the arrays that get populated when you post a tabular form. If you run your page and look at the generated HTML in the browser, you'll see the f01, f02, f03 values for each row. Each of these is an array corresponding to a g_fxx array parameter in wwv_flow.accept. You can reference these values in PL/SQL as I showed. For forms, you just reference items by their name as bind variables or using the v function, but tabular forms (updatable reports) require a different approach.
Note that the example you set up on apex.oracle.com does not resemble your original problem description/question at all. I showed you this technique as a way to get that particular page to do exactly what you described.
You might find this how-to useful: http://www.oracle.com/technology/products/database/application_express/howtos/tabular_form.html.
Scott

Similar Messages

  • How to get current row data in table control

    Hi , expert ,
       I am professional in oracle ,  but  now I am a new guy in SAP ABAP .
    I  have a question in UI
    How to get current row data and click pushbutton  in table control  to open next screen ?
    I want to get the current data and open next screen to carry out detail detail .
    Thansk for all your suggestion .

    GET CURSOR LINE SY-CUROW .
      READ TABLE internal_table index SY-CUROW.

  • How to get Current Row values in Af:ForEach

    Hi,
    We have a requirement to conditionally Display/Hide CommandLink item in af:forEach Loop.
    <af:forEach items="#{bindings.RegionalAreaPVO.rangeSet}" var="parent">
    <af:spacer height="10" id="s1"/>
    <af:commandLink inlineStyle="font-weight:bold;" text="#{parent.ItemName}" partialSubmit="true" actionListener="#{backingBeanScope.RegionalAreaBean.launchTaskflow}" id="cl1" rendered="*#{backingBeanScope.XXWFCRegionalAreaBean.modelEligibleflag eq true}*">
    <af:setActionListener from="#{parent.Code}" to="#{parentNode}"/>
    </af:commandLink>
    </af:forEach>
    I have added a Cutom Managed Bean Class and Returning boolean value to Control Render property which is working. But now i want to add business Logic based on 'parent.ItemName' or 'parentNode' Values in the bean method to return proper Boolean value.
    But i am unable to get the Current Iteration values in the bean method.
    I am using below EL expressions to get the values. But no luck.
    String nameel = (String)ADFUtil.evaluateEL("#{bindings.parent.ItemName}");
    String codeel = (String)ADFUtil.evaluateEL("#{parent.Code}");
    String nodeEl = (String)ADFUtil.evaluateEL("#{parentNode}");
    Also, i have tried getting the Row object like below but i am getting the First row details always. My intention is to get Current row values and use them for Business logic.
    ViewRowImpl row =
    (ViewRowImpl)ADFUtil.evaluateEL("#{bindings." + VoName +
    "Iterator.currentRow}");
    String code = (String)row.getAttribute("Code");
    Any help is highly appreciated.
    Thanks
    Kaja

    Hi Sascha,
    I have tried that. But in my case the functional logic behind the Rendering is based on more complex logic. Hence i am trying to add a method to return a boolean in Render property of the Link.
    But the real problem for me is, in the Managed bean method i am not finding a way to get the Current Iteration index. If i can get the Current iteration index, i can get the Corresponding Component ID of Command link (In the forEach Loop Component Id's are getting generated Dynamically based on Iteration Index), i can use that and add additional logic and derive true/false to return.
    Any inputs?
    Thanks
    Kaja

  • How to get Current row of ViewObject in the DoDML methode

    Hi all
    I have two ViewObject EmplyesView and DeptView
    How to get Current row of ViewObject DeptView in the DoDML methode of EmplyesView

    OK, we can play this game on and on...
    I'll ask for a use case (http://en.wikipedia.org/wiki/Use_case) and you don't give any info we don't already know. After an other 10 posts we probably know what you real problem is and can give you the advice which you could have gotten in the fist place.
    So please take some time and describe the problem as if you would ask your mother for help. Tell us how the data model is build and how the VO are related. Is there any input from an user involved? Which information from the other view do you need? How do you get to the doDML method? Is there a button in the ui involved?
    Timo

  • Issue in getting current row value using getCurrent Value

    Issue:When I call ththe method executeSearchVO from controller class
    with Row row = personalActionSearchVO.first();
    I am getting the corresponding value.
    but my requirement is I have multiple record , If i press action on any of the record, I need to read SITName value for the particular record and need to pass it as parameter to other pager(i mean If i select any record, I need to get corresponding value in the attribute for the record.)
    if i comment personalActionSearchVO.first(); i am getting null pointer exception.
    Pl. helpme how to get current row instead of first row always.
    AMIMPL Clause
    public void executeSearchVO(String loginPersonId)
    XXHRPersonalActionSearchVOImpl personalActionSearchVO =getXXHRPersonalActionSearchVO1();
    personalActionSearchVO.initQuery(loginPersonId);
    // Row row = personalActionSearchVO.first();
    row = personalActionSearchVO.getFirstFilteredRow("action","1");
    Row masterRow = row;
    personalActionSearchVO.setCurrentRow(masterRow);
    OARow Row1 = (OARow)personalActionSearchVO.getCurrentRow();
    System.out.println("Org "+Row1.getAttribute("Organization"));
    calling this method from controller clause
    if("action".equals(pageContext.getParameter(EVENT_PARAM)) )
    System.out.println("Person Id "+ pageContext.getParameter("XXHRPersonId"));
    Serializable methodParams[] = {pageContext.getEmployeeId()+""};
    applicationModule.invokeMethod("executeSearchVO",methodParams);
    need it urgently. pl. help
    thanks
    siva

    Timo,
    I am new to Jdevloper. I will explain the issue in detail.
    Version: Oracle 9i Jdeveloper
    I have a query page with multiple records. when I perform action , I need to pass 2 parameters from query screen to my actual page.
    1 parameter is Login person Id,. Now the issue is with getting current value for 2nd paramenter. 2nd Parameter will be changed depends upon record i am choosing in my query page: column is : Information Name.
    when I use getcurrentrow , I am getting null pointer exception.
    My controller class when I click action button :
    if("action".equals(pageContext.getParameter(EVENT_PARAM)) )
    Serializable methodParams[] = {pageContext.getEmployeeId()+""};
    applicationModule.invokeMethod("executeSearchVO1",methodParams);
    {color:#993300}
    // Here I need to get InformationName value based on the record I am choosing{color}
    HashMap hashMap = new HashMap(2);
    hashMap.put("XXHRPersonId", pageContext.getParameter("XXHRPersonId"));
    // hashMap.put("InformationName", methodParams);
    pageContext.forwardImmediately(
    "OA.jsp?page=/xxhr/oracle/apps/xxhr/selfservice/personalaction/webui/XXHRPersonalActionPG",
    null,
    OAWebBeanConstants.KEEP_MENU_CONTEXT,
    null,
    hashMap,
    true, // Retain AM
    OAWebBeanConstants.ADD_BREAD_CRUMB_NO
    my AMIMPL Clause :
    I am just pasting whatever I have tried. Pl. suggest me If my code is wrong.
    *{color:#993300}I need to get current row information value from the below method*
    *{color}*
    public void executeSearchVO1(String loginPersonId)
    XXHRPersonalActionSearchVOImpl personalActionSearchVO =getXXHRPersonalActionSearchVO1();
    personalActionSearchVO.initQuery(loginPersonId);
    System.out.println("Row count "+personalActionSearchVO.getRowCount());
    // Row row = personalActionSearchVO.first();
    Row row = personalActionSearchVO.getCurrentRow();
    System.out.println("Informaton Name "+row.getAttribute("InformationName");
    In this , If i initialzie with Row row = personalActionSearchVO.first();I am able to get value for my column Information Name.
    whereas, if I use directly Row row = personalActionSearchVO.getCurrentRow();, i am getting null pointer exception.
    Pl. let me know how to get current row value for Information Name.
    Looking for the reply at the earliest.
    Thanks
    siva

  • How to get current row value from table when press the submit button

    Hi,
    I want to get the current row value of SuccessionPlanId which is one of the column in a advanced table.
    I created one button (created using personalization, action fired thru CO)in the table as column, so each row having one button, if i press the first row's button means then i want to fetch the first row's SuccessionPlanId and if it is 3rd means then i want to get the value of third row's value.
    How to do it in controller extension?
    Please reply soon, its urgent.
    Thanks in advance,
    SAN

    Pratap,
    Yes, I tried with 'delete' button which is seeded one.
    For this, our code using row reference is working too fine. it throws exact SuccessionPlanId value of corresponding row.
    I created MessageStyledText, but here i need to give text value right, then only it 'll appear in the page.
    Instead i created one image and fired explicitly from the controller processRequest method.
    But the same problem remains..
    here my code:
    public void processRequest(OAPageContext pageContext, OAWebBean webBean){
    super.processRequest(pageContext, webBean);
    OAButtonBean oabb = (OAButtonBean)webBean.findChildRecursive("XXSubmit");
    FireAction action = new FireAction("XXSubmit");
    oabb.setAttributeValue(UIConstants.PRIMARY_CLIENT_ACTION_ATTR, action);
    OAImageBean oaib=(OAImageBean)webBean.findChildRecursive("XXSubmitImage");
    oaib.setFireActionForSubmit("XXSubmitImage", null, null, true);
    public void processFormRequest(OAPageContext pageContext, OAWebBean webBean){
    if("XXSubmitImage".equals(pageContext.getParameter("event"))){
    String succIdI="";
    String rowRefI = pageContext.getParameter(OAWebBeanConstants.EVENT_SOURCE_ROW_REFERENCE);
    if(rowRefI != null && !("".equalsIgnoreCase(rowRefI ))){
    PerSuccPlanSearchVORowImpl rowI = (PerSuccPlanSearchVORowImpl)oaam.findRowByRef(rowRefI);
    if(rowI != null)
    succIdI=rowI.getAttribute("SuccessionPlanId").toString();
    }else{
    throw new OAException("Row is null");
    throw new OAException(succIdI, OAException.INFORMATION);
    }else{
    super.processFormRequest(pageContext, webBean);
    If i run the page using this controller, it throws exception without any value, because for 'succIdI' i initialized without any string.
    Can you please suggest me how to solve?

  • How to get Current Row information

    Hi,
    Actually i have an lov item and when user enters some value in the lov and just tabs out the process request method on the lov region is fired. Now the lov item is in a advance table and table has lets say 5 rows.
    Now the user enters some invalid value in lov item of say 3 row and tabs out of the lov. As a result the lov popup gets enabled and process request at the lov region is called.
    Now my requirement is in the process request of lov region i want to get hold of the current row of view object.
    I have attached a controller at the lov region and i have put system.out.println at process request method.
    The control is going there, now when i grab the VO and do getCurrentRow() it doesn't return anything.
    Actually i know that we can capture the tab out event using pageContext.islovevent but it gets fired only for valid values in lov input. for invalid values process request is called at the lov region.
    Kindly put some light on it.
    Thanks,
    Gaurav Sharma

    Actually, when the user tabs out of the lov then if there's a valid value in lov then lovValidate event is fired and lov is not popped up. But for invalid values lovvalidate event is not getting fired but control goes to the process request of lov region.
    My requirement is that i have two lovs in an advance table region . one for Country and one for State.
    Now i want that as the user enters some value in State lov and tabs out then as the lov gets popped up then it should pick up the value in Country LOV and based on that Country it should display the results for the current row as there may be multiple rows on advance table.
    Now there are two things, when user clicks on lov torch on state then lov prepare event is fired and then i am able to grab the the country for the current row using row reference.
    But when user enters some invalid value in state lov and tabs out then no event is fired, rather than this process request is called at the lov region . Now how can i capture the value in Country lov of current row.
    Thanks,
    Gaurav
    Edited by: [email protected] on May 21, 2009 4:59 AM

  • Get Current row in Editable ALV

    Hi,
    I have editable alv, when i press "insert row" or "Append row" i need to get current inserted/appended row element reference or index.
    How can i get this??
    Please suggest.

    Hi kranthi ,
    While inserting row you must be selecting a row, you can get the index of the selected row by this following code
    get Index of selected table item
    CALL METHOD NODE_NAME->GET_LEAD_SELECTION_INDEX
    RECEIVING INDEX = Lv_Indx.
    ( DATA: Lv_Indx Type i )
    or while you are appending a row you can use Describe int_table LINES lv_line and use the value of 'lv_line' as the index.
    Regards

  • How to get current row using submit button ?

    Hello Friends ,
    Is there any way i can capture the value of current row by submit button ?
    Here is my requirement , i have seeded OAF screen and it has table region one of the column has radio button , the existing
    functionality is when ever the radio button is selected and click on submit button ( submit button attached on top of the table region )
    other oaf page is getting opened .
    Now i wish to restrict the navigation based on some condition , but i don't know how to get the current row using submit button .
    Note : there is no Fire Action event for radio button column ? I dont' know how orale is selecting a specific row
    Any suggestion please ?
    Regards ,
    Vamsi

    Thanks sushant for your response ,
    Well i have tried your approch , i am not getting values for current row .
    if (pageContext.getParameter("paApply") != null)
    OAApplicationModule am = pageContext.getApplicationModule(webBean);
    OAViewObject localOAViewObject1 = (OAViewObject)am.findViewObject("ProjectDatesVO");
    if(localOAViewObject1!=null) {
    Row DateVoROw = localOAViewObject1.first();
    RowSetIterator iterator = localOAViewObject1.createRowSetIterator("iterator");
    iterator.setRangeStart(0);
    iterator.setRangeSize(localOAViewObject1.getRowCount());
    for(int i=0; i<iterator.getRowCount(); i++)
    DateVoROw=iterator.getRowAtRangeIndex(i);
    String vacancyValue= DateVoROw .getAttribute("vacancyname).toString();
    Could you please let me know where i am going wrong
    Thanks again ,
    Vamsi

  • Getting current row or cursor

    Hi all,
    I'm using FM 'REUSE_ALV_GRID_DISPLAY' in my program. However, I'm having problem getting the current row or the cursor position in my ALV. If possible, I do not wish to use OO method in doing this. Is there any other way?

    Hello Mil,
    When u double click a row we can able to capture the column value field name every thing.#
    Check this.
    FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
                      RS_SELFIELD TYPE SLIS_SELFIELD.
      CHECK RS_SELFIELD-FIELDNAME = 'VBELN_O' OR
            RS_SELFIELD-FIELDNAME = 'VBELN'.
      CASE R_UCOMM.
        WHEN '&IC1'.   "doubleclick
          SET PARAMETER ID 'AUN' FIELD RS_SELFIELD-VALUE.
    *      IF RS_SELFIELD-FIELDNAME = 'VBELN_O'.
          IF RS_SELFIELD-FIELDNAME = 'VBELN_O'.
            IF  NOT  RS_SELFIELD-VALUE IS INITIAL.
              CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
            ELSE.
              MESSAGE E999(Z48MM) WITH TEXT-T02 SPACE SPACE SPACE.
            ENDIF.
          ELSEIF RS_SELFIELD-FIELDNAME = 'VBELN'.
            PERFORM CALL_TRANSACTION_VA23 USING RS_SELFIELD-VALUE.
    *        CALL TRANSACTION 'VA23' AND SKIP FIRST SCREEN.
          ENDIF.
      ENDCASE.
    ENDFORM.                    " USER_COMMAND

  • How to get Current Row in POV of a screen

    hi ,
    On F4 of a field in a screen in POV, i need to fetch some details based on some other fields in the same row. How can i get the row number??
    Thanks

    Hi Radhika,
    Try this way. Let me know if you get any doubt .
    *  MODULE f4_on_tablecontrol OUTPUT
    MODULE f4_on_tablecontrol OUTPUT.
      DATA: BEGIN OF it_marc OCCURS 0,
              matnr TYPE marc-matnr,
              werks TYPE marc-werks,
            END OF it_marc.
      DATA:it_dynpread TYPE TABLE OF dynpread,
           wa_dynpread LIKE LINE OF it_dynpread.
      DATA: it_return_tab TYPE ddshretval OCCURS 0,
            wa_return LIKE LINE OF it_return_tab.
      wa_dynpread-fieldname = 'ITAB-WERKS'.
      wa_dynpread-stepl     = tabc-current_line. "Where TABC is table control name.
      APPEND wa_dynpread TO it_dynpread.
      CLEAR  wa_dynpread.
      "DYNP_VALUES_READ read screen
      CALL FUNCTION 'DYNP_VALUES_READ'
        EXPORTING
          dyname     = sy-repid
          dynumb     = sy-dynnr
        TABLES
          dynpfields = it_dynpread.
      READ TABLE it_dynpread INTO wa_dynpread INDEX 1.
      p_werks = wa_dynpread-fieldvalue.
      IF it_marc[] IS INITIAL.
        SELECT * FROM marc INTO CORRESPONDING FIELDS OF TABLE it_marc WHERE werks = p_werks.
      ENDIF.
      "F4 help F4IF_INT_TABLE_VALUE_REQUEST
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          retfield    = 'MATNR'
          dynpprog    = sy-repid
          dynpnr      = sy-dynnr
          dynprofield = 'ITAB-MATNR'
          value_org   = 'S'
        TABLES
          value_tab   = it_marc
          return_tab  = it_return_tab.
      IF sy-subrc EQ 0.
        READ TABLE it_return_tab INTO wa_return INDEX 1.
        IF sy-subrc EQ 0.
          p_matnr = wa_return-fieldval.
        ENDIF.
      ENDIF.
    ENDMODULE.                    "f4_on_tablecontrol OUTPUT
    Thanks
    Venkat.O

  • Get current row and column in JEditorPane

    Hi,
    I have a JEditorPane and I want to show the current row and column according to the caret position
    can anyone please assist ?
    Thanks,
    Dekel

    JEditorPane was designed to display HTML which may not have a great concept of row column once you start adding tables and other fancy stuff. If you only have text data then I would use a JTextArea or JTextPane, they are easier to work with.
    I want to show the current row and column according to the caret positionCheck out this posting:
    http://forum.java.sun.com/thread.jspa?forumID=57&threadID=608220

  • How to get  current row(Based on Radio button check)  submit button Click

    Hi i hava Query Region Search(Based On Auto Customization Criteria).
    For Showing Results iam Using Table Region.
    Using Radio button How we get the row reference value using Submit button Click.
    Please Help on this .
    Thanks & Regards
    San

    Hi san ,
    Try this
    if ("EventID".equals(pageContext.getParameter(EVENT_PARAM)))
    String rowRef = pageContext.getParameter(OAWebBeanConstants.EVENT_SOURCE_ROW_REFERENCE);
    OARow row = (OARow)am.findRowByRef(rowRef);
    VORowImpl lineRow = (YourVORowImpl)findRowByRef(rowRef); // Replace your vo name .
    Please refer this link , Let me know if its not clear .
    Single Selection in table Region in OAF .
    Keerthi

  • Error using a binding to get current row data

    Hi, from a previous post ( Calling a stored procedure ) that has been answered i have reached to this point and cant get go on:
    i have a method declared on appmoduleimpl that calls to a procedure stored in the database and passes two parameters (one string, and one int)to the stored procedure.I drag and drop the method from the data control pallete to my jspx page.
    the problem is that i want to get the value of two rows from the current record and set them as values from the parameters.
    My Binding:
    ${bindings.Module3EmpIterator.currentRow.empno}
    ${bindings.Module3EmpIterator.currentRow.ename}
    Note: Module3Emp its the name of my view
    when i use this binding i get this error code
    JBO-29000: javax.servlet.jsp.el.ELException: Unable to find a value for "ename" in object of class "oracle.jbo.server.ViewRowImpl" using operator "."
    javax.servlet.jsp.el.ELException: Unable to find a value for "ename" in object of class "oracle.jbo.server.ViewRowImpl" using operator "."
    JBO-29000: javax.servlet.jsp.el.ELException: Unable to find a value for "ename" in object of class "oracle.jbo.server.ViewRowImpl" using operator "."
    javax.servlet.jsp.el.ELException: Unable to find a value for "ename" in object of class "oracle.jbo.server.ViewRowImpl" using operator "."
    JBO-29000: javax.servlet.jsp.el.ELException: Unable to find a value for "ename" in object of class "oracle.jbo.server.ViewRowImpl" using operator "."
    javax.servlet.jsp.el.ELException: Unable to find a value for "ename" in object of class "oracle.jbo.server.ViewRowImpl" using operator "."
    Thanks.

    Here i store a pl/sql code in a method (At AppModuleImpl Level)
    public void callProc1 (String ename,
    int empno)
    PreparedStatement plsqlBlock = null;
    // String statement = "BEGIN p_proc1(:1,:2); END;";
    String statement = "BEGIN INSERT INTO p_proc (ID, dato, numero) VALUES (s_proc.NEXTVAL, :1, :2); END;";
    plsqlBlock = getDBTransaction().createPreparedStatement(statement,0);
    try
    plsqlBlock.setString(1,ename);
    plsqlBlock.setInt(2,empno);
    plsqlBlock.execute();
    catch (SQLException sqlException)
    throw new SQLStmtException(CSMessageBundle.class,
    CSMessageBundle.EXC_SQL_EXECUTE_COMMAND,
    statement,
    sqlException);
    finally
    try
    plsqlBlock.close();
    catch (SQLException e)
    // We don't really care if this fails, so just print to the console
    e.printStackTrace();
    now i expose the method and set the variables in the page definition.
    <methodAction id="callProc1"
    InstanceName="Module3AppModuleDataControl.dataProvider"
    DataControl="Module3AppModuleDataControl"
    MethodName="callProc1" RequiresUpdateModel="true" Action="999"
    IsViewObjectMethod="false">
    <NamedData NDName="ename"
    NDValue="${bindings.Module3EmpIterator.currentRow.ename}"
    NDType="java.lang.String"/>
    <NamedData NDName="empno"
    NDValue="${bindings.Module3EmpIterator.currentRow.empno}"
    NDType="int"/>
    (that does it automatically when i drag and drop the method to the jspx page).
    This is the code in the command button inside the jspx page
    <af:commandButton actionListener="#{bindings.callProc1.execute}"
    text="callProc1"
    disabled="#{!bindings.callProc1.enabled}"/>
    When i click the button, the method should insert the selected column on a new table that i created But it doesn't. How i can do it, or how i can see the output of those values (bindings.Module3EmpIterator.currentRow.empno... etc.)
    Note: when i hardcode the values and put Hello instead of bindings.Module3EmpIterator.currentRow.empno it inserts into the table and works everything fine.

  • Creating view to get first row for each table !!

    I am having tables(more than 10) which are related using foreign key and primary key relationship.
    Example:
    Table1:
    T1Prim T1Col1 T1Col2
    Table2
    T2For T2Prim T2Col1 T2Col2 T2Col3
    (here T2For will have value same as T1Prim and in my design it has same column name i.e. T1Prim)
    Table3
    T3For T3Prim T3Col1 T3Col2 T3Col3
    (here T3For will have value same as T2Prim)
    and so on.
    The data in the tables is like For table1 there will be one record, for table2 there will be one record and for table 3 there are more than one records.
    Can i view either the first record for each of them or all records from each of them by writing the following view.
    I have written a view like this:
    Create or replace view test (T1Prim,T1Col1, T1Col2,T2Prim,T2Col1 T2Col2, T2Col3, T3Prim,T3Col1, T3Col2, T3Col3)
    As
    Select
    Table1.T1Prim,
    Table1.T1Col1,
    Table1.T1Col2,
    Table2.T2Prim,
    Table2.T2Col1,
    Table2.T2Col2,
    Table2.T2Col3,
    Table3.T3Prim,
    Table3.T3Col1,
    Table3.T3Col2,
    Table3.T3Col3
    From
    Table1,
    Table2,
    Table3
    where
    Table1.Prim = Table2.For
    and Table2.Prim = Table3.For
    When i ran the select statement on the view I am not getting any data. Whereas there is data when select is ran on individual table.
    Can someone please tell me where i am goofing.
    Thanks in the anticipation that i will get some hint to solve this.
    Eagerly waiting for reply.
    Thanks !!

    I mean use a collection :
    Collection Methods
    A collection method is a built-in function or procedure that operates on collections and is called using dot notation. The methods EXISTS, COUNT, LIMIT, FIRST, LAST, PRIOR, NEXT, EXTEND, TRIM, and DELETE help generalize code, make collections easier to use, and make your applications easier to maintain.
    EXISTS, COUNT, LIMIT, FIRST, LAST, PRIOR, and NEXT are functions, which appear as part of an expression. EXTEND, TRIM, and DELETE are procedures, which appear as a statement. EXISTS, PRIOR, NEXT, TRIM, EXTEND, and DELETE take integer parameters. EXISTS, PRIOR, NEXT, and DELETE can also take VARCHAR2 parameters for associative arrays with string keys. EXTEND and TRIM cannot be used with index-by tables.
    For more information, see "Using Collection Methods".
    Syntax
    Text description of the illustration collection_method_call.gif
    Keyword and Parameter Description
    collection_name
    This identifies an index-by table, nested table, or varray previously declared within the current scope.
    COUNT
    COUNT returns the number of elements that a collection currently contains, which is useful because the current size of a collection is not always known. You can use COUNT wherever an integer expression is allowed.
    For varrays, COUNT always equals LAST. For nested tables, normally, COUNT equals LAST. But, if you delete elements from the middle of a nested table, COUNT is smaller than LAST.
    DELETE
    This procedure has three forms. DELETE removes all elements from a collection. DELETE(n) removes the nth element from an index-by table or nested table. If n is null, DELETE(n) does nothing. DELETE(m,n) removes all elements in the range m..n from an index-by table or nested table. If m is larger than n or if m or n is null, DELETE(m,n) does nothing.
    EXISTS
    EXISTS(n) returns TRUE if the nth element in a collection exists. Otherwise, EXISTS(n) returns FALSE. Mainly, you use EXISTS with DELETE to maintain sparse nested tables. You can also use EXISTS to avoid raising an exception when you reference a nonexistent element. When passed an out-of-range subscript, EXISTS returns FALSE instead of raising SUBSCRIPT_OUTSIDE_LIMIT.
    EXTEND
    This procedure has three forms. EXTEND appends one null element to a collection. EXTEND(n) appends n null elements to a collection. EXTEND(n,i) appends n copies of the ith element to a collection. EXTEND operates on the internal size of a collection. So, if EXTEND encounters deleted elements, it includes them in its tally. You cannot use EXTEND with index-by tables.
    FIRST, LAST
    FIRST and LAST return the first and last (smallest and largest) subscript values in a collection. The subscript values are usually integers, but can also be strings for associative arrays. If the collection is empty, FIRST and LAST return NULL. If the collection contains only one element, FIRST and LAST return the same subscript value.
    For varrays, FIRST always returns 1 and LAST always equals COUNT. For nested tables, normally, LAST equals COUNT. But, if you delete elements from the middle of a nested table, LAST is larger than COUNT.
    index
    This is an expression that must yield (or convert implicitly to) an integer in most cases, or a string for an associative array declared with string keys.
    LIMIT
    For nested tables, which have no maximum size, LIMIT returns NULL. For varrays, LIMIT returns the maximum number of elements that a varray can contain (which you must specify in its type definition).
    NEXT, PRIOR
    PRIOR(n) returns the subscript that precedes index n in a collection. NEXT(n) returns the subscript that succeeds index n. If n has no predecessor, PRIOR(n) returns NULL. Likewise, if n has no successor, NEXT(n) returns NULL.
    TRIM
    This procedure has two forms. TRIM removes one element from the end of a collection. TRIM(n) removes n elements from the end of a collection. If n is greater than COUNT, TRIM(n) raises SUBSCRIPT_BEYOND_COUNT. You cannot use TRIM with index-by tables.
    TRIM operates on the internal size of a collection. So, if TRIM encounters deleted elements, it includes them in its tally.
    Usage Notes
    You cannot use collection methods in a SQL statement. If you try, you get a compilation error.
    Only EXISTS can be applied to atomically null collections. If you apply another method to such collections, PL/SQL raises COLLECTION_IS_NULL.
    You can use PRIOR or NEXT to traverse collections indexed by any series of subscripts. For example, you can use PRIOR or NEXT to traverse a nested table from which some elements have been deleted.
    EXTEND operates on the internal size of a collection, which includes deleted elements. You cannot use EXTEND to initialize an atomically null collection. Also, if you impose the NOT NULL constraint on a TABLE or VARRAY type, you cannot apply the first two forms of EXTEND to collections of that type.
    If an element to be deleted does not exist, DELETE simply skips it; no exception is raised. Varrays are dense, so you cannot delete their individual elements.
    PL/SQL keeps placeholders for deleted elements. So, you can replace a deleted element simply by assigning it a new value. However, PL/SQL does not keep placeholders for trimmed elements.
    The amount of memory allocated to a nested table can increase or decrease dynamically. As you delete elements, memory is freed page by page. If you delete the entire table, all the memory is freed.
    In general, do not depend on the interaction between TRIM and DELETE. It is better to treat nested tables like fixed-size arrays and use only DELETE, or to treat them like stacks and use only TRIM and EXTEND.
    Within a subprogram, a collection parameter assumes the properties of the argument bound to it. So, you can apply methods FIRST, LAST, COUNT, and so on to such parameters. For varray parameters, the value of LIMIT is always derived from the parameter type definition, regardless of the parameter mode.
    Examples
    In the following example, you use NEXT to traverse a nested table from which some elements have been deleted:
    i := courses.FIRST; -- get subscript of first element
    WHILE i IS NOT NULL LOOP
    -- do something with courses(i)
    i := courses.NEXT(i); -- get subscript of next element
    END LOOP;
    In the following example, PL/SQL executes the assignment statement only if element i exists:
    IF courses.EXISTS(i) THEN
    courses(i) := new_course;
    END IF;
    The next example shows that you can use FIRST and LAST to specify the lower and upper bounds of a loop range provided each element in that range exists:
    FOR i IN courses.FIRST..courses.LAST LOOP ...
    In the following example, you delete elements 2 through 5 from a nested table:
    courses.DELETE(2, 5);
    In the final example, you use LIMIT to determine if you can add 20 more elements to varray projects:
    IF (projects.COUNT + 20) < projects.LIMIT THEN
    -- add 20 more elements
    Related Topics
    Collections, Functions, Procedures
    http://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a96624/13_elems7.htm#33054
    Joel P�rez

Maybe you are looking for

  • BADI/User Exit for KO02

    Dear Experts, When I'm setting the BUDGETED status manually to Internal Order (With out distributing the Budget to Order in IM52) and after if I m setting RELEASE status the system is accepting. So, I want to stop this without giving the budget in IO

  • To Blackberry

    How can a Flash lite application be transfered to a BlackBerry Device? Though there is no support for Flash Lite in Blackberry, is there any option to view the application in the device or any converter is available so that the application can be pla

  • Text in customer invoices

    Hi, I have a requirement of clent that text o be displayed at the bottom of invoice  on the basis of VAT code i.e. suppose VAT code selected is V1 - text should be ABC & if VAT code is V2-Text should be CDE How to configure this ? please help Thanks

  • My Iphone 3G reboot itself after few minutes when i done auto lock.

    My Iphone 3G reboot itself after few minutes when i done auto lock. otherwise its working good and i m not facing other problems but when i do auto lock then after few minutes i press home button then my iphone start from the starting. Please help me

  • How do i disable contact sync so I can then enable in Good Enterprise

    How do I disable contact sync so I can then enable in Good Enterprise