Insert data from variables in the Ref Cursor

I do not know how to return data from ref cursor variables That's what I've tried so far...
CREATE OR REPLACE type num_obj as object (
  t_number number ,
  t_type varchar2(10) ,
  t_desc varchar2(40)
); 
CREATE OR REPLACE type num_table as table of num_obj; 

procedure get_all_data(p_p1 in varchar2, p_rc OUT SYS_REFCURSOR) is
   l_dat1 number := 2;
   l_dat2 varchar2(10);
   l_dat3 varchar2(40);
   t_num_o num_obj;
   t_num_t num_table;
begin
  for l_indx in 1..5 loop
     l_dat1 := l_dat1 + l_indx;
     if ( mod(l_dat1,2)=0) then
       l_dat2 := 'EVEN';
     else
       l_dat2 := 'ODD';
     end if;
     l_dat3 := 'Number ' || l_dat1 || ' is ' || l_dat2 || ' number'; 
     l_num_o := num_obj (l_dat1, l_dat2, l_dat3);
     l_num_t := num_table(l_num_o);
  end loop;
  open p_rc for select * from table(l_num_t);
  close p_rc;
end;
At the end, to achieve this in Ref Cursor:
t_number | t_type | t_desc
---------------------------------------
3        | ODD    | Number 3 is ODD number
5        | ODD    | Number 5 is ODD number
8        | EVEN   | Number 8 is EVEN number
12      | EVEN    | Number 12 is EVEN number
17      | ODD     | Number 17 is ODD number
Can something like that, where I did wrong?

BTW. I did this with the function in pipeline, now I want to try a different method.

The refcursor can not be closed in the procedure - you must return refcursor open to the appellant.
the appellant must read and then close it.
There are also some errors in the names of variables and an assignment to the collection.

Try this version:

CREATE OR REPLACE
PROCEDURE GET_ALL_DATA(P_P1 IN VARCHAR2, P_RC OUT SYS_REFCURSOR) IS
   l_dat1 number := 2;
   l_dat2 varchar2(10);
   L_DAT3 VARCHAR2(40);
   L_NUM_O NUM_OBJ;
   l_num_t num_table := num_table() ;
BEGIN
  for l_indx in 1..5 loop
     l_dat1 := l_dat1 + l_indx;
     if ( mod(l_dat1,2)=0) then
       l_dat2 := 'EVEN';
     else
       l_dat2 := 'ODD';
     end if;
     l_dat3 := 'Number ' || l_dat1 || ' is ' || l_dat2 || ' number';
     L_NUM_O := NUM_OBJ (L_DAT1, L_DAT2, L_DAT3);
     L_NUM_T.EXTEND;
     l_num_t( l_indx ) := l_num_o;
  end loop;
  OPEN P_RC FOR SELECT * FROM TABLE(L_NUM_T);
END;
/
SQL> variable xx refcursor
SQL> execute GET_ALL_DATA( '', :xx );

PL/SQL procedure successfully completed.

SQL> print :xx

  T_NUMBER T_TYPE     T_DESC
---------- ---------- ----------------------------------------
      3 ODD           Number 3 is ODD number
      5 ODD           Number 5 is ODD number
      8 EVEN       Number 8 is EVEN number
     12 EVEN       Number 12 is EVEN number
     17 ODD           Number 17 is ODD number

Tags: Database

Similar Questions

  • Getting error while inserting data from source to the target in the procedures?

    Hello

    I want to insert the data from the source to the target in the procedures, have the same schema.

    For this, I did as follows

    Command on the source:

    Technologies: oracle

    Schema: EDWHCMB

    Command:

    SELECT COMPANY_NAME, COMPANY_CODE OF

    EDWHCMB. DWT_COMAPNY

    Command on the target:

    Technologies: oracle

    Schema: EDWHCMB

    command:

    INSERT INTO EDWHCMB. TEMP

    VALUES)

    COMPANY_CODE,

    COMPANY_NAME)

    I have run the procudere then I got error as follows

    ODI-1228: SAMPLE1 (procedure) task fails on ORACLE EDWH connection target.

    Caused by: java.sql.BatchUpdateException: ORA-00984: column not allowed here.


    How to insert the data from the source to the target in the proceedings?

    Please send any document to this...

    Please help me.

    Thanks in advance,

    A.Kavya.

    Hi Bruno.

    If your tables are on the same schema then why do you use command on the source and the command on the target? You can simply do the following on the command on the target

    INSERT INTO EDWHCMB. TEMP

    SELECT COMPANY_NAME, COMPANY_CODE OF

    EDWHCMB. DWT_COMAPNY


    If you really want at all to use the command on the source and target both then I think you need to change the following code on your order on the target

    INSERT INTO EDWHCMB. TEMP

    VALUES)

    : COMPANY_CODE,.

    (: COMPANY_NAME)

    Hope your TEMP table has only these 2 columns.

    Thank you

    Ajay

  • Report regions - use of the Ref Cursor?

    APEX 4.2

    See http://mikesmithers.wordpress.com/2012/02/22/getting-apex-to-play-with-ref-cursors

    The above article is older than 2 years. The techniques shown in the link above still valid today if we want to create a report region in the APEX are based on a function that returns a Ref Cursor? Are there improvements in this area for the next APEX 5.0 and/or database Oracle 12 c?

    Thank you

    HELEN wrote:

    APEX 4.2

    See http://mikesmithers.wordpress.com/2012/02/22/getting-apex-to-play-with-ref-cursors

    The above article is older than 2 years. The techniques shown in the link above still valid today if we want to create a report region in the APEX are based on a function that returns a Ref Cursor?

    If the function returns the ref cursor is the only point of access that you have data then Yes, it probably is. If you have direct access to the underlying database objects and the function does not have something very complicated, then you are probably better off creating your own body of the function returning SQL query data source.

    Everything about the dynamics of ref Cursor now I divided in 2 layers, with a function for generating the dynamic SQL and another for bind parameters open the ref cursor. APEX apps can then reuse the functions of SQL query in function body return SQL query data sources (if you take a bit of care to keep the bind variable names vaguely APEX-point-friendly).

    Are there improvements in this area for the next APEX 5.0 and/or database Oracle 12 c?

    See this for the technical background on why APEX is not yet support ref Cursor and this for more information of the Oracle team on the possibility of future support. Obviously, he did not he in 4.1. I suspect that data REF CURSOR region sources depended on a minimum requirement of DB of the 11.1.0.6 (where was introduced support for the conversion of the REF CURSOR in the cursors DBMS_SQL). As minimum DB for APEX 5.0 version is 11.1.0.7, it would be a possible feature for 5.0, but it is not classified as one.

  • help how to extract the ref cursor in the table field

    Hello.


    I have a query similar to the following:
    select department_id, cursor (select employee_id from employees where department_id = d.department_id)
      from departments d
    Expecting to get several lines, I want this select this option to be in bulk sampled in a table variable nested (of another type of nested table) which is copied to an out parameter in a procedure. I have some doubts:
    1 should. what I create the column in the inner nested table that will keep the result of the ref cursor? Ref cursor colunm? A sort of column Adrien?
    2. If the column in the nested table inside that will keep the result of the ref cursor is another array, how can I write the result of the entire query in a single volume?

    (I want to bulk collect everything in a single query, I know how to do with pl/sql do not inflate but using two nested for loops, that's what I try to avoid).


    Thanks in advance.

    It would be simpler:

    declare
        type dep_emp_list_tbl_type
          is table of sys.OdciVarchar2List;
        v_dep_emp_list_tbl dep_emp_list_tbl_type;
        v_dep_id_tbl sys.OdciNumberList;
    begin
        select  department_id, cast(multiset(select employee_id from hr.employees where department_id = d.department_id) as sys.OdciVarchar2List)
          bulk collect into v_dep_id_tbl,v_dep_emp_list_tbl
          from hr.departments d;
    end;
    /
    

    SY.

  • How to start the view off of the ref cursor Oracle as input/output param

    Hello world

    We use JDev 11.1.2.3 WL 10.3.6 and Java 7.

    We are at the beginning of our transition from Oracle Forms to ADF.  We have a very large forms that uses many store procedures that have IN/OUT ref Cursor parameters and tables plsql.  I tried to find information on best practices to achieve, but only seemed to find tutorials on SEO of the Oracle ref Cursor return functions.  I hope we don't have to rewrite our code of database to work with ADF.

    This is an example of a proc currently a block on a form based on directly

    The ref cursor parameter is input/output to satisfy the way the form handles this type of paradigm.

    ADF we want I hope to reuse these procs existing (without the need to wrap/overload them) on the basis of the display objects.

    Example:

    / * my record type which houses the information I want to go back * /.

    TYPE rec_hist_vacpac_status IS RECORD)

    rec_order NUMBER (5),

    rec_rownum NUMBER (5),

    return_column SAM_VACPAC.vacpac_status%TYPE,

    rec_login_id SAM_VACPAC.ins_user%TYPE,

    status_date SAM_VACPAC.status_date%TYPE

    );

    / * Sets the ref cursor type * /.

    TYPE lcur_hist_vacpac_status IS REF CURSOR;

    / * This is a procedure that would take some info link go / return

    Return the ref cursor of this information as an in / out * /.

    PROCEDURE prc_myinfo_refcur)

    pnum_identify_seq_id in NUMBERS

    pcur_myinfo IN OUT lcur_hist_vacpac_status);

    Can anyone point me in the right direction on documentation on this?

    Thank you!

    Hi Cemerson:

    See this example:

    1. 1. create a TYPE as an object

    CREATE OR REPLACE

    TYPE GOTYOB_EQUI

    AS AN OBJECT

    (

    CDELEM VARCHAR2 (50).

    TIELEM VARCHAR2 (2)

    );

    1. 2. create a TABLE TYPE AS

    CREATE OR REPLACE

    TYPE GOTYTA_EQUI

    AS THE GOTYOB_EQUI TABLE;

    1. 3 create a function, it returns the TYPE of the TABLE

    FUNCTION fn_equiposarriba)

    pa_cdelem IN VARCHAR2,

    pa_nucomp in NUMBERS

    pa_anperi in NUMBERS

    pa_meperi in NUMBERS

    )

    Gotyta_equi RETURN PIPELINED IS

    CURSOR trae_equimani (va_cdelem VARCHAR2) IS

    SELECT cdelem, tielem, cdelempadr,

    (SELECT cdequi

    Of evm_alim

    WHERE anperi = eq.anperi

    AND meperi = eq.meperi

    AND nucomp = eq.nucomp

    AND cdalim = eq.cdalim) cdalim

    Of evm_equimani eq

    WHERE anperi = pa_anperi

    AND meperi = pa_meperi

    AND nucomp = pa_nucomp

    AND cdelem = va_cdelem

    AND cdelempadr <> cdelem

    AND tielem <> 'A ';

    equimani trae_equimani % ROWTYPE;

    va_cdalim VARCHAR2 (100);

    BEGIN

    -Loading los equipos aguas arriba

    WHILE equimani.cdelempadr IS NOT NULL LOOP

    OPEN trae_equimani (equimani.cdelempadr);

    equimani: = NULL;

    SEEK trae_equimani INTO equimani;

    CLOSE Trae_equimani;

    IF equimani.cdelem IS NOT NULL THEN

    PIPE ROW (gotyob_equi (equimani.cdelem, equimani.tielem));

    END IF;

    END LOOP;

    RETURN;

    END;

    1. 4 SQL Query with the help of the function... you can use this SQL in a display object

    SELECT

    *

    Of

    TABLE (gopq_eventos.fn_equiposarriba (' F-SCZ-043-103', '))

    1,

    2013,

    6

    )

    )

    Best regards, Marcelo

  • How to insert image from mysql into the table using php and create the checkbox in the table?

    How can I insert image from mysql into the table using php and create the checkbox for each data as a vote? Here is my code...

    WELCOME

    connect_error) {die ("connection failed:".)} $conn-> connect_error); } $sql = "SELECT no, Calon, ID, of course, the Image OF THE candidates." $result = $conn-> Query; If ($resultat-> num_rows > 0) {echo ' '; export data of each line while ($row = $result-> fetch_assoc()) {"echo"}}
    NO Candidate INFO Vote
    " . $row ["no"]. "-" . $row ["Calon"]. "
    -" . $row ['ID']. "
    -" . $row ['class']. "
    "; } ECHO ' ' ;} else {echo '0 results' ;} $conn-> close();?} >

    hope someone can help me because I am a newbie in this program... need to finish this project... Thank you.

    If you have saved the file name in the database, it's pretty simple.

    echo '' . $row['description'] . '';
    

    Is the same for the box:

    echo '';
    

    If you have saved the image file in the database, it is much more complicated. I recommend you store only the file name in the database.

  • Fetch the Ref Cursor several times

    create or replace 
    PROCEDURE refcursor1
    AS
    TYPE r_cursor IS REF CURSOR;
    rcv_emp r_cursor;
    TYPE rec_emp IS record
    (
    empno NUMBER,
    ename VARCHAR2(20 CHAR),
    deptno number
    );
    recv_emp rec_emp;
    recv_emp2 rec_emp;
    -------------------------------------------------------
    PROCEDURE printemployeedetails AS
    BEGIN
      loop
      fetch rcv_emp INTO recv_emp;
      exit WHEN rcv_emp%notfound;
        dbms_output.put_line(recv_emp.empno||'-'||recv_emp.ename||'-'||recv_emp.deptno);
      END loop;
    END;
    -------------------------------------------------------
    PROCEDURE printemployeedetails2(p_emp r_cursor) IS
    BEGIN
      loop
      fetch p_emp INTO recv_emp2;
      exit WHEN p_emp%notfound;
        dbms_output.put_line(recv_emp2.empno||'-'||recv_emp2.ename||'-'||recv_emp2.deptno);
      end loop;
    END;
    -------------------------------------------------------
    BEGIN
      FOR i IN (SELECT deptno FROM dept order by deptno)
      loop
        OPEN rcv_emp FOR SELECT empno,ename,deptno FROM emp WHERE deptno=i.deptno;
        dbms_output.put_line(i.deptno);
        dbms_output.put_line('--------------------');
        dbms_output.put_line('calling printemployeedetails');
        printemployeedetails;
        dbms_output.put_line('                    ');
        dbms_output.put_line('calling printemployeedetails2');
        dbms_output.put_line('                    ');
        printemployeedetails2(rcv_emp);
        CLOSE rcv_emp;
      END loop;
    end;
    

    Output:

    10
    --------------------
    calling printemployeedetails
    7839-KING-10
    7782-CLARK-10
    7934-MILLER-10
                        
    calling printemployeedetails2
                        
    20
    --------------------
    calling printemployeedetails
    7566-JONES-20
    7788-SCOTT-20
    7902-FORD-20
    7369-SMITH-20
    7876-ADAMS-20
                        
    calling printemployeedetails2
                        
    30
    --------------------
    calling printemployeedetails
    7698-BLAKE-30
    7499-ALLEN-30
    7521-WARD-30
    7654-MARTIN-30
    7844-TURNER-30
    7900-JAMES-30
                        
    calling printemployeedetails2
                        
    40
    --------------------
    calling printemployeedetails
                        
    calling printemployeedetails2
                        
    
    

    Hi all

    If I open a cursor once can I collect the elements of a cursor n times as above? I see one of these procedures to print the details, but not both.

    Wonder why that I'm passing same ref cursor to a second procedure.

    It doesn't throw me an error indicating that the elements of the ref cursor is already read.

    Thank you.

    Your condition is not clear. Cursor is a pointer. He points to the result set of your query. At the time wherever you collect once, it advances the pointer to the next line and so on. I wonder if the pointer can return to the previous line once you recovered.

  • How can I insert data from another table into a table containing a timestamp column

    How you insert data from another table in a table if the target table contains a timestamp column. I tried to set the default value of GETDATE() column in the target table, but it does not work.


    I use MS SQL

    Sorry, I managed to get around this by inserting null as the value

  • Return of the ref cursor of procedure where the cursor is defined in the specification

    Hello

    Here's pseudo-code

    create or replace package test
    as
    cursor c_emp (number cv_emp_id)
    is
    Select emp_name emp where emp_id = cv_emp_id;

    type ref_c is ref cursor;

    function get_emp_name (number p_emp_id) return ref_c;
    end test;
    /


    create or replace the test physics package
    as
    ref_c function get_emp_name (number p_emp_id)
    is
    ret_val ref_c;
    Start
    Open c_emp (p_emp_id);
    ret_val: = c_emp;
    return ret_val;

    end get_emp_name;
    end test;
    /

    Returns me "PLS-00382: expression is of the wrong type. I tried to use a strongly typed Ref cursor based on the cursor, but nothing helped.

    Clearly, I understand something... and if I can't assign as ' ret_val: = c_emp "and if there is another key way it so please let me know.

    Thank you

    Ralph

    Published by: user13024707 on May 5, 2010 04:43

    user13024707 wrote:
    Clearly the point of my question is being missed.

    Or maybe the question is not been clearly asked. ;)

    I want to set the cursor in the PACKAGE SPECIFICATION, and not in the package body. The issue of the bind variable and the string is neither here nor there because I pass parameters to the cursor.

    What you ask is to use a PL/SQL cursor (defined in the specifications of the package or elsewhere) and that convert a Ref Cursor. N ° cannot be done.
    PL/SQL cursors should be used in the PL/SQL code. REF CURSOR is primary used to pass back a reference to a cursor (and all queries are cursors) to a layer of application outside of PL/SQL for example .net, java, etc.. Once you start using the ref Cursor only really, you have the choice of opening it based on a (dynamic) or a fixed query string as in the examples given. You cannot open a cursor of a PL/SQL cursor definition Ref.

    The difference is that when you do:

      CURSOR cur_mycursor IS
        SELECT ...
    

    you declare a cursor in pl/sql definition, not actually a slider itself. The cursor itself is created when you issue an OPENING or a statement FOR etc. So a Ref Cursor (reference to a slider) cannot refer to the definition of the cursor because it is only a definition, not a cursor (i.e. it has not been sent engine sql and instantiated at that time here). Instead the Ref Cursor must reference a cursor (query), itself, and that may be presented as a string or as the query itself that is issued against the sql engine and then the ref cursor points

    Thus, slider ref and PL/SQL cursors are different concepts, both designed to manage cursors in a slightly different way of programming. You cannot mix them.

  • How print/store in the ref cursor block pl/sql folder?

    How print/store in the ref cursor block pl/sql folder?

    return to the SQL * the method I showed above:

    SQL> create or replace procedure test (p_refcur out sys_refcursor)
      2  is
      3  begin
      4    open p_refcur for select * from dual union all select * from dual;
      5  end test;
      6  /
    
    Procedure created.
    
    SQL> var r refcursor;
    SQL> begin
      2    test(:r);
      3  end;
      4  /
    
    PL/SQL procedure successfully completed.
    
    SQL> print r;
    
    D
    -
    X
    X
    
    2 rows selected.
    
  • Is it possible to combine dynamic &amp; static queries in the ref cursor?

    Hi all

    I was wondering if it is possible to combine dynamic & static queries in the ref-cursor?
    CREATE OR REPLACE FUNCTION dynamic_static_kk
       RETURN sys_refcursor
    AS
       o_cursor   sys_refcursor;
    BEGIN
      open 'select 1 fom dual'
           union
           select 2 from dual;
    
       RETURN o_cursor;
    END;
    In the existing code, the two parts of the query are static, but I need to improve & replacement of part would do the trick.

    So, I was wondering if it is possible to keep the static part 2. Of course, do both dynamic parts seems the only possible treatment for me.

    So, I was wondering if it is possible to keep the static part 2.

    No, you can't.

    Of course, do both dynamic parts seems the only possible treatment for me.

    Yes, it's the only way.

  • Extract data from files of the NRF

    Hello!

    So, I'm working on a project where I have files of data that are written on 12 channels in a .nrf file.  As the NRF seems to be a pretty unique file format I don't come with a better than DIAdem Software for open data.  I'm looking for a way to take data from each of the channels and enter the values programmatically every x number of data points.  I use Visual Studio, written in c#, using the Library COM DIAdem.

    At this point I wrote a very basic program that uses CmdExecuteSync ("DataFileImport (" "+ file.)") FillName + "')"); to import the .nrf file in DIAdem, but from there, I'm lost.  I tried to export the data using the DataFileSaveSel function, but unfortunately the CSV output ends up being almost a gigabyte in size, which is too big for my needs.  I hope there is a way to perform the operation, that I need in tiara and if so someone could help get me pointed in the right direction.

    Thank you very much in advance for any help.

    Hi Kub,

    I recommend you use the loading capacity reduced by tiara, like this:

    n = 10
    SectionBegin = 1
    SectionEnd = 1000
    Call DataDelAll
    Call DataFileLoadRed (FileDlgName, "", "", "IntervalWidth", N, 1, SectionBegin, SectionEnd)

    This will load every nth value from value 1 to the value 1000.

    Brad Turpin

    Tiara Product Support Engineer

    National Instruments

  • Initialize the Ref Cursor to avoid ORA-01001: Invalid cursor

    Hello

    I write a stored procedure that returns a REF CURSOR. However, there are times when the cursor is not open if certain conditions are not met, so I wonder if there is a way to initialize the REF CURSOR so that the appellant does not receive the "ORA-01001: Invalid cursor" error when you try to work with the cursor, if it has not been opened.

    Any help is greatly appreciated...

    Thank you
    Christine

    cad0227 wrote:
    Hello

    I write a stored procedure that returns a REF CURSOR. However, there are times when the cursor is not open if certain conditions are not met, so I wonder if there is a way to initialize the REF CURSOR so that the appellant does not receive the "ORA-01001: Invalid cursor" error when you try to work with the cursor, if it has not been opened.

    Any help is greatly appreciated...

    Thank you
    Christine

    The most appropriate way would be the caller to handle the situation. The caller must capture the exception of INVALID_CURSOR and do what is necessary.

    Other suggestions like having a separate Pavilion or a model select all will lead the appellant to act to the particular situation, that slider is not being opened. What is the case with the exception of INVALID_CURSOR raised by oracle.

    All the need for the appellant to do is manage the exception of INVALID_CURSOR and you should be good. And also INVALID_CURSOR is not a mistake, it's an exception that has a special meaning for her. In the case you sense it takes the condition when not together to return a cursor.

  • What is the difference between the ref cursor and the sys_refcursor.

    create or replace procedure GetEmployeesInDept (c sys_refcursor)

    Hello


    I have a query related to the above stored procedures.
    When you set the cursor, we mentioned as sys_refcursor and in some US sites I saw him as a REF CURSOR as shown

    create or replace procedure GetEmployeesInDept (Ref Cursor c)


    Please tell me what is the difference between the ref cursor and the sys_refcursor.

    http://download.Oracle.com/docs/CD/B19306_01/AppDev.102/b14261/tuning.htm#sthref2376

    Concerning

    Etbin

  • How to transfer data from oracle to the web service using ODI with axis2 tech

    Hi all

    Can someone cause a document or markets about 'How to transfer data from oracle to the web service with the help of ODI with AXIS2 technology'
    If any person with a document or markets, please share it with me

    Thank you
    Phani

    I can give you a few examples of web services in ODI, perhaps that you find them useful?
    Try: -.
    http://John-Goodwin.blogspot.com/2009/04/ODI-series-Web-services.html
    http://John-Goodwin.blogspot.com/2009/05/ODI-series-Web-services-part-3.html
    http://John-Goodwin.blogspot.com/2009/05/ODI-series-Web-services-part-4.html

    See you soon

    John
    http://John-Goodwin.blogspot.com/

Maybe you are looking for

  • I can't find the tab of Firefox which takes me to edit and print et al, except that I have a little bitty screen.

    I just got a new computer and have changed for windows 8, and the guy put in place with internet explore when I was accustomed to using firefox. My son put on firefox, but I can't find the tab firefox with access to edit, print, print preview, etc.,

  • HPDM: HPDM can't see any of my thin clients

    A few months ago, I set up a server HPDM on Win 2012r2 and light HP 12, mainly mt245 clients. I could see all the thin clients with HPDM, I even used it for the Image of each of them. Yesterday, I went to add a new abd mt245 the image. All TCs went f

  • Office PC Audio Cable male-male

    Well, I'm sure it will be simple for you all the computer wizards out there.  But I am only one person of basic computer level.  So, let's go... Desktop PC.  Looking for the old standard male to male Cable Audio TRS mini Plug.  Black cable with plugs

  • X 31 driver wifi

    I don't know why when ever my router security is my laptop WEP button gave me blue screen. It works when I turn off the Wifi. As the operating system becomes very slow, I decided to reformat the drive and give it a fresh reinstall of the operating sy

  • Sony dcr-hc35e drivers for windows 7

    Please I want the drivers for windows 7 for my sony handycam dcr-hc35e