How to use  SYS_REFCURSOR as a table  in calling sp

hi gurus,
here i have 2 sp in which i m calling GET_OPREF inside GET_REFCALL. and in GET_REFCAL i want to use output cursou as a table .
plz help me ....
CREATE OR REPLACE PROCEDURE GET_OPREF
(p_cursor OUT  SYS_REFCURSOR )
is
begin
open p_cursor FOR
    select 10 amt from dual union all
    select  20 amt from dual union all
    select 30 amt from dual ;
end GET_OPREF ;
CREATE OR REPLACE PROCEDURE GET_REFCALL
is
  c_cursor   SYS_REFCURSOR ;
  r_emp      get_2%rowtype ;
   v_tot int ;
begin 
  GET_OPREF(c_Cursor);
select sum (amt) into v_tot from c_Cursor;  -- *here i want to user cursor as a table*
    dbms_output.put_line(v_tot ); 
end get_refcall ;Edited by: user12108669 on Dec 1, 2009 5:03 AM
Edited by: user12108669 on Dec 1, 2009 5:09 AM

After you run the procedure your cursor is open. You can fetch it right away and use it like you would use a regular cursor.
SQL> set serveroutput on
SQL> CREATE OR REPLACE PACKAGE type_pack AS
  2  type t_cur is ref cursor;
  3  type t_tab is table of number;
  4  END type_pack;
  5  /
Package created.
SQL> CREATE OR REPLACE procedure test_ref(cur_output out sys_refcursor) i
  2  begin
  3    open cur_output for
  4    with test as
  5      (select 1 num from dual
  6       union select 2 num from dual
  7       union select 3 num from dual)
  8      select num
  9        from test;
10  end;
11  /
Procedure created.
SQL> CREATE OR REPLACE procedure run_test is
  2    cur_test sys_refcursor;
  3    tab_cur type_pack.t_tab;
  4  begin
  5    dbms_output.put_line('running...');
  6    test_ref(cur_test);
  7    fetch cur_test bulk collect
  8      into tab_cur;
  9    for i in 1 .. tab_cur.count
10    loop
11    dbms_output.put_line(tab_cur(i));
12    end loop;
13  end;
14  /
Procedure created.
SQL> exec run_test;
running...
1
2
3
PL/SQL procedure successfully completed.
SQL>

Similar Messages

  • How to use the item of table(ms access) in pl/sql

    I want to use oracle forms builer developer application with ms access database
    I don't know how to use the item of table in the pl/sql;please help me !

    MERGE INTO EmpDept Target
    Using (SELECT E.Address,
    e.Design,
    e.EmailId,
    e.EmpId,
    e.Ename,
    e.ManagerId,
    e.Salary,
    D.DeptId,
    D.DeptName,
    D.Location
    FROM Employee E
    INNER JOIN Dept D
    ON E.DeptId = D.DeptId) AS Source (Address, Design, EmailId, EmpId, EName, ManagerId, Salary, DeptId, DeptName, Location)
    ON Source.EmpId = Target.EmpId
    WHEN NOT matched THEN
    INSERT (Address,
    Design,
    EmailId,
    EmpId,
    Ename,
    ManagerId,
    Salary,
    DeptId,
    DeptName,
    Location)
    VALUES (Address,
    Design,
    EmailId,
    EmpId,
    EName,
    ManagerId,
    Salary,
    DeptId,
    DeptName,
    Location)
    WHEN matched THEN
    UPDATE SET Address = Source.Address,
    Design = Source.Design,
    EmailId = Source.EmailId,
    Ename = Source.Ename,
    ManagerId = Source.ManagerId,
    Salary = Source.Salary,
    DeptId = Source.DeptId,
    DeptName = Source.DeptName,
    Location = Source.Location;

  • How to use database look up table function in xsl mapping

    Can anybody tell me how to use database look up table function while mapping xsl between 2 nodes.
    I have an XML file coming in and depending on one of XML elements we need to decide which further path to take. But, using this XML element, we need to query database table, get metadata and accordingly take appropriate path. I have written lookup function which returns metadata value.
    Now, the issue is how do I pass the XML element valu as input to look up function? When I tried to drag it to the input node of lookup function, it throws an error like "Maximum number of parameters exceeded"
    Thanks,

    If the lookup table is always going to remain the same (e.g. a character generator or something similar) you can place the values in a 2D array constant on your diagram, with the input value as one column, the equivalent as the other. When you need to perform the lookup you use an index array to return all the values in the "input column", search it using "search 1D array" and use the resulting index number to index the other column's data. If the values may change, then it would probably be best to load an array control with your equivalent values from a file.
    P.M.
    Putnam
    Certified LabVIEW Developer
    Senior Test Engineer
    Currently using LV 6.1-LabVIEW 2012, RT8.5
    LabVIEW Champion

  • [HTML DB] How to use the existing database table?

    [HTML DB] How to use the existing database table?
    I installed Oracle 10g database in Computer A(Windows 2000), and I already create all the tables with data and the data size is about 300MB.
    In Computer B(Windows 2000), I installed HTML DB 1.6.
    How can I use /get the existing database table (in computer A) for HTML DB?
    Could anyone help me on this? I am newbie and I need some detail instructions. or Where can I find the examples.....
    Thanks

    Well I guess if you wish to retain that architecture, i.e. HTMLDB on one machine and your data on another, you will have to establish database links to access the data. Oracle documentation will describe how to achieve that.

  • How to use create-default-dbms-tables in SQL Server 2000

    Hi everyone,
    I'm new in EJB development. I'm trying to deploy a CMP to Weblogic 8.1 SP1 using
    JBuilderX. I configured a ConnectionPool and DataSource to allow the CMP to access
    the SQL Server 2000. However, I cannot deploy the CMP if I didn't create the table
    in SQL Server manually. Does anyone know how to use the create-default-dbms-tables?

    Refer to
    http://e-docs.bea.com/wls/docs81/ejb/DDreference-cmp-jar.html#1162249
    "Keith" <[email protected]> wrote:
    >
    Hi everyone,
    I'm new in EJB development. I'm trying to deploy a CMP to Weblogic 8.1
    SP1 using
    JBuilderX. I configured a ConnectionPool and DataSource to allow the
    CMP to access
    the SQL Server 2000. However, I cannot deploy the CMP if I didn't create
    the table
    in SQL Server manually. Does anyone know how to use the create-default-dbms-tables?

  • How to use simple types for table column names ?

    Hi,
    can any one tell how to to use simple types for table column names?
    It is required in internationalizing of webdynpro applications.
    Regards,
    Rajesh

    Hi,
    1: define required column names in <SimpleType>
    2:use the following code to get those values
    3:bind 'text' property of Column headers to context attributes
    4:take a context attribute 'Value' as type of <SimpleType>
    5:set these values to context attributes
    IWDAttributeInfo objAttrInfo=wdContext.getNodeInfo().getAttribute(IPrivate<ViewName>View.IContextElement.VALUE);
    ISimpleTypeModifiable simple=objAttrInfo.getModifiableSimpleType();
    Map m=simple.getEnumerationTexts();
    Collection c=m.values();
    Iterator it=c.iterator();
    if(it.hasNext())
    wdContext.currentContextElement.set<att1>(it.next().toString);
    if(it.hasNext())
    wdContext.currentContextElement.set<att2>(it.next().toString);
    if(it.hasNext())
    wdContext.currentContextElement.set<att3>(it.next().toString);
    Regards
    LakshmiNarayana

  • How to use non-default Alias Table in Analyzer report

    Hi,I defined many alias tables in Essbase. I would like to use a different alias table other than the "default" in Analyzer 6.5 report. In the on-line help, it said I can modify in "database connection properties" when first defining a new report to use a specific alias table. It tells me to do the following: Click the "New" toolbar button. Select a Display Type or Layout, and click OK. Right-click a database connection name in the "Select Database Connections" dialog box, and select Modify from the right-click menu.So I did this, but as I did the last-right click, there is no "Modify" option available. Only has "Add New..", "Database Connection Properties.." However, if I defined a new personal database connection using the login user, I can select to use other alias table. But this will go to personal database connection properties.Is it possible to specifically tell Analyzer to use other alias the global level in database connection? What I use to do is to have certain reports to use the default alias, and another to use another alias table. These reports should be able to share across all users.Sam

    In deed it is fix in the GA.Another way to set the alias table is to do it in the Admin client. If you add a connexion to a user there is a new 6.5 button "set alias" that allow you to set the default alias table for this specific user. But, it does not exit on a user group level.

  • How to use substr in external table defnition.

    Hi All,
    Im using oracle 11g. I have an external table which is reading data from a file. For one of the column, i need to get only the first 250 characters. My external table defnition looks like this
    create table tbl_substr
    ( col1 varchar2(20),
    col2 varchar2(250)
    organization external
    ( type oracle_loader
    default directory XXXX
    access parameters (
    records delimited by newline
    FIELDS TERMINATED BY '|'
    missing field values are null
    ( col1 ,
    col2 "substr(:col2,1,250)"
    ) ) location ('file.txt') )
    reject limit unlimited
    But this defnition gives an error when i do select * from tbl_substr
    I want to use substr in external table defnition its self and not in SELECT. Also i dont want to crete a view to solve this. If anyone has done this please help.

    You need to play with COLUMN_TRANSFORMS
    http://download.oracle.com/docs/cd/B19306_01/server.102/b14215/et_params.htm#sthref1792
    BTW, i too got it from Google. I was not aware about this :)
    Amardeep Sidhu

  • How to use colspan in data table?

    I have a requiremnt like using colspan in data table.
    I heared it is possible with some javascripting code . I s it true.
    If possible pleese send that code.

    It's just free to use? Or are you violating the Apache license somehow?
    Well, the best solution turns out to create a custom component.
    You can also try to group/render a h:panelGrid in a h:column to simulate multiple columns. This might involve some rework with the layout (CSS should be sufficient tho) and the generated code would look like dirty. But this should work anyhow.

  • How to use filter for data tables? Important topic but no docs/examples.

    I was looking at the TableRowGroup APIs:
    http://developers.sun.com/prodtech/javatools/jscreator/reference/docs/apis/webui/index.html
    and looks like it has getTableDataFilter and setTableDataFilter methods. Sounds to me, that we can use TableDataFilter to filter rows that are displayed. For example, we can provide users with a drop down list of fields to choose from, and input field to enter the value of the selected field, so that they can narrow down the rows to search for specifics row(s) they are looking for.
    I have not seen any example, or enough documentation, to figure out how to use this filter. Since JSC is new, there are not too many resources out there or on web for such specific issues. Any gurus out there?
    Thanks

    Creator Team: Data filtering tutorial is over due now. This is something that will be useful to most developers. We all want to display users some data and want to provide user ability to filter it down based on some criteria, i.e. display rows within a date range, display all rows that have certain value or a field, etc. If there is a built-in filter in TableRowGroup, why not document it adequately along with some examples and a tutorial?
    This is one of the key elements of Microsoft/VS.NET market share -- provide tons of example/tutorials/advanced code/books/3rd party books, etc. Why can't other companies follow a well-proven success element? In spite of making a better product, the can end up loosing or not gaining enough share, because of this lack of attention.

  • How to use %Type declaration with table residing in a different database

    How can I use the %TYPE declaration if the table is from a different database.
    E.g
    v_business_unit ps_jrnl.header.business_unit%TYPE;
    In the above declaration statement,the table 'ps_jrnl_header' resides in a different database(Database A) from the one I am currently in( Database B).(This is because data needs to be extracted from Database A into Database B).

    1. Create a database link to the other database (this probably already exists since your proc is interacting with that database)
    2. Create a synonym for the table in the other database
    create synonym foo for ps_jrnl.header@database_a;3. Reference the synonym in your variable declaration:
    v_business_unit  foo.business_unit%TYPE;

  • How to use Hyperlinks in a table

    In my JSF application, I have a table that returns a list of customers. I want to have each link pull up the customer details page with the data for the row that the user clicked on. Is there an easy way to do this?
    I have figured out how to replace a text field in a column with a hyperlink and have set it to display the correct text for each row but I have the following issues:
    1) if I try to use the current row, it is always the first row displayed, not the row the user clicked on
    2) I can construct the link url in such a way that it posts back to me with the customer Id, but then how do I obtain the information? From the request Bean?
    For example my urls on 2 rows of the table are:
    http://localhost:28080/TestApp/faces/Home.jsp?CustID=1
    http://localhost:28080/TestApp/faces/Home.jsp?CustID=2
    This is how I built the links:
    <ui:tableColumn binding="#{Home.tableColumn2}" headerText="Customer ID" id="tableColumn2" sort="customer.customer_id">
    <ui:hyperlink binding="#{Home.hlCustomer}" id="hlCustomer" target="_self"
    text="#{currentRow.value['customer.customer_id']}" url="?#{currentRow.value['customer_url']}"/>
    Any help apprechiated, as I am new at this.

    I'm not sure if this is what you want to do, but I did something similar, allowing JSC to handle everything.
        public String hyperlinkClarifyCaseNum_action() {
            // Select the current case & go to editSev1
            TableRowDataProvider rowData = (TableRowDataProvider) getBean("currentRow");
            getRequestBean1().setClarifyCaseNum((Integer)rowData.getValue("espsev1.sev1ClarifyCaseNum"));
            getRequestBean1().setSev1ID((Integer)rowData.getValue("espsev1.sev1ID"));
            return "editSev1";
        }This saves the key (sev1ID) in a session bean, then goes to the page that will allow user to edit the sev1 entry. That page retrieves the key & does the query to populate the page.
    I copied this from the JSC book available free on the website.
    Very similar to 2) above ;-)

  • How to use CDHDR and CDPOS tables

    Hello Gurus,
    How can the data be extracted from CDHDR and CDPOS tables ?
    For example, I want to find the changes for the material master, what is the object need to be given in the OBJECT value etc..
    I tried to use restricting the transaction MM02 and the date valid from and to, but it is taking longer time.
    Appreciate, if you can provide the objects which can be used to track the changed data like Production orders etc..
    Thanks
    Aadhya

    Hi Aadhya,
    For the Change Document Object (OBJECTCLAS), you can use the following item:
    MATERIAL = material master
    ORDER = production order/maintenance order
    EINKBELEG = purchasing document
    VERKBELEG = sales document
    The Object Value (OBJECTID) is usually the object's number, such as material number, production order number, etc.
    Get the Document Number (CHANGENR) and go to CDPOS to see the changes detail.
    Regards,
    Julian

  • How to use PF status in Table Control?

    I have made 1 table control. Now I need to use three buttons like SELECT, DESELECT, DELETE the rows of table control using PF STATUS.  Can you plz help with the Code.

    Hi.
    Refer this code.
    The following example processes a table control with LOOP with parallel loop using an internal table. By using function codes you can sort columns and delete rows from the internal table. The ready for input status of the table control fields is controlled using a function code.
    REPORT demo_dynpro_tabcont_loop_at.
    CONTROLS flights TYPE TABLEVIEW USING SCREEN 100.
    DATA: cols LIKE LINE OF flights-cols,
          lines TYPE i.
    DATA: ok_code TYPE sy-ucomm,
          save_ok TYPE sy-ucomm.
    DATA: itab TYPE TABLE OF demo_conn.
          TABLES demo_conn.
    SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE itab.
    LOOP AT flights-cols INTO cols WHERE index GT 2.
      cols-screen-input = '0'.
      MODIFY flights-cols FROM cols INDEX sy-tabix.
    ENDLOOP.
    CALL SCREEN 100.
    MODULE status_0100 OUTPUT.
      SET PF-STATUS 'SCREEN_100'.
      DESCRIBE TABLE itab LINES lines.
      flights-lines = lines.
    ENDMODULE.
    MODULE cancel INPUT.
      LEAVE PROGRAM.
    ENDMODULE.
    MODULE read_table_control INPUT.
      MODIFY itab FROM demo_conn INDEX flights-current_line.
    ENDMODULE.
    MODULE user_command_0100 INPUT.
      save_ok = ok_code.
      CLEAR ok_code.
      CASE save_ok.
        WHEN 'TOGGLE'.
          LOOP AT flights-cols INTO cols WHERE index GT 2.
            IF  cols-screen-input = '0'.
              cols-screen-input = '1'.
            ELSEIF  cols-screen-input = '1'.
              cols-screen-input = '0'.
            ENDIF.
            MODIFY flights-cols FROM cols INDEX sy-tabix.
          ENDLOOP.
        WHEN 'SORT_UP'.
          READ TABLE flights-cols INTO cols WITH KEY selected = 'X'.
          IF sy-subrc = 0.
            SORT itab STABLE BY (cols-screen-name+10) ASCENDING.
            cols-selected = ' '.
            MODIFY flights-cols FROM cols INDEX sy-tabix.
          ENDIF.
        WHEN 'SORT_DOWN'.
          READ TABLE flights-cols INTO cols WITH KEY selected = 'X'.
          IF sy-subrc = 0.
            SORT itab STABLE BY (cols-screen-name+10) DESCENDING.
            cols-selected = ' '.
            MODIFY flights-cols FROM cols INDEX sy-tabix.
          ENDIF.
        WHEN 'DELETE'.
          READ TABLE flights-cols INTO cols
                                  WITH KEY screen-input = '1'.
          IF sy-subrc = 0.
            LOOP AT itab INTO demo_conn WHERE mark = 'X'.
              DELETE itab.
            ENDLOOP.
          ENDIF.
      ENDCASE.
    ENDMODULE.
    Reward all helpfull answers.
    Regards.
    Jay

  • How to use Inner join of table as Source in Merge statement in SQL

    Hi All,
        I am trying to make source as multiple tables output using Join while coding there is no any syntax error but when i am executing this statement is giving following error
    Following is the query 
    Merge Into EmpDept Target
    Using (select E.Address,e.Design,e.EmailId,e.EmpId,e.Ename,e.ManagerId, e.Salary,D.DeptId,D.DeptName,D.Location from Employee E Inner join Dept D on E.DeptId=D.DeptId )As Source (Address,Design,EmailId,EmpId,EName,ManagerId,Salary,DeptId,DeptName,Location)
    On Source.EmpId=Target.EmpId
    when not matched then
    Insert (Target.Address,Target.Design,Target.EmailId,Target.EmpId,Target.Ename,Target.ManagerId, Target.Salary,Target.DeptId,Target.DeptName,Target.Location)
    values
    (Address,Design,EmailId,EmpId,EName,ManagerId, Salary,DeptId,DeptName,Location)
    When matched then 
    Update set Target.Address = Source.Address ,Target.Design = Source.Design,Target.EmailId      = Source.EmailId     ,Target.Ename       = Source.Ename      ,Target.ManagerId = Source.ManagerId , Target.Salary        = Source.Salary       ,Target.DeptId      = Source.DeptId      ,Target.DeptName = Source.DeptName ,Target.Location    = Source.Location;
    This is error while executing the above merge statement 
    The insert column list used in the MERGE statement cannot contain multi-part identifiers. Use single part identifiers instead.
    Please suggest me where i am wrong.. 
    Niraj Sevalkar

    MERGE INTO EmpDept Target
    Using (SELECT E.Address,
    e.Design,
    e.EmailId,
    e.EmpId,
    e.Ename,
    e.ManagerId,
    e.Salary,
    D.DeptId,
    D.DeptName,
    D.Location
    FROM Employee E
    INNER JOIN Dept D
    ON E.DeptId = D.DeptId) AS Source (Address, Design, EmailId, EmpId, EName, ManagerId, Salary, DeptId, DeptName, Location)
    ON Source.EmpId = Target.EmpId
    WHEN NOT matched THEN
    INSERT (Address,
    Design,
    EmailId,
    EmpId,
    Ename,
    ManagerId,
    Salary,
    DeptId,
    DeptName,
    Location)
    VALUES (Address,
    Design,
    EmailId,
    EmpId,
    EName,
    ManagerId,
    Salary,
    DeptId,
    DeptName,
    Location)
    WHEN matched THEN
    UPDATE SET Address = Source.Address,
    Design = Source.Design,
    EmailId = Source.EmailId,
    Ename = Source.Ename,
    ManagerId = Source.ManagerId,
    Salary = Source.Salary,
    DeptId = Source.DeptId,
    DeptName = Source.DeptName,
    Location = Source.Location;

Maybe you are looking for