Using PIPELINED in VO

Hello,
I have 2 types:
create or replace type e1e2 AS OBJECT (
e1 varchar2(3),
e2 varchar2(3));
CREATE OR REPLACE TYPE e1e2_tabtype AS TABLE OF e1e2;
and function:
CREATE OR REPLACE function manage_type(ee in varchar2) return e1e2_tabtype PIPELINED
as
e1 varchar2(3);
e2 varchar2(3);
CURSOR e IS
SELECT 'o' one, ee two from dual
union
SELECT ee one, 'o1' two from dual;
begin
open e;
loop
fetch e into e1,e2;
EXIT WHEN e%NOTFOUND;
PIPE ROW (e1e2 (e1,e2));
end loop;
close e;
return ;
end manage_type;
and query:
select e2,e1 from TABLE (manage_type(:P))
the query returns 2 rows in TOAD, but when I create a view object on the query it raise error:
SELECT * from (select e1,e2 from TABLE(manage_type(:P))) QRSLT where 1=2 - ORA-22905: cannot access rows from non-nested table item.
The same query works fine without parametrs:
lselect * from TABLE(mamage_sergey_type('0')) ---- works!
I wonder why legal query does not work in view object. I have not seen any restrictions on using TABLE function in ADF.
I need it to work against Oracle 8i.
SNikiforov

SNikforov,
Try this query for your VO:
select e1, e2 from table(cast (manage_type(:P) as e1e2_tabtype))ADF will wrap your VO query (as you can see) with "select * from (<your query here>) qrslt where 1=2 - if your query works fine with SQL*Plus in that fashion, it should work with ADF.
John

Similar Messages

  • Query performance improvement using pipelined table function

    Hi,
    I have got two select queries one is like...
    select * from table
    another is using pielined table function
    select *
    from table(pipelined_function(cursor(select * from table)))
    which query will return result set more faster????????
    suggest methods for retrieving dataset more faster (using pipelined table function) than a normal select query.
    rgds
    somy

    Compare the performance between these solutions:
    create table big as select * from all_objects;
    First test the performance of a normal select statement:
    begin
      for r in (select * from big) loop
       null;
      end loop;
    end;
    /Second a pipelined function:
    create type rc_vars as object 
    (OWNER  VARCHAR2(30)
    ,OBJECT_NAME     VARCHAR2(30));
    create or replace type rc_vars_table as table of  rc_vars ;
    create or replace
    function rc_get_vars
    return rc_vars_table
    pipelined
    as
      cursor c_aobj
             is
             select owner, object_name
             from   big;
      l_aobj c_aobj%rowtype;
    begin
      for r_aobj in c_aobj loop
        pipe row(rc_vars(r_aobj.owner,r_aobj.object_name));
      end loop;
      return;
    end;
    /Test the performance of the pipelined function:
    begin
      for r in (select * from table(rc_get_vars)) loop
       null;
      end loop;
    end;
    /On my system the simple select-statement is 20 times faster.
    Correction: It is 10 times faster, not 20.
    Message was edited by:
    wateenmooiedag

  • Using Pipeline Table functions with other tables

    I am on DB 11.2.0.2 and have sparingly used pipelined table functions but am considering it for a project that has some fairly big (lots of rows) sized tables. In my tests, selecting from just the pipelined table perform pretty well (whether it is directly from the pipleined table or the view I created on top of it). Where I start to see some degregation when I try to join the pipelined tabe view to other tables and add where conditions.
    ie:
    SELECT A.empno, A.empname, A.job, B.sal
    FROM EMP_VIEW A, EMP B
    WHERE A.empno = B.empno AND
          B.mgr = '7839'
    I have seen some articles and blogs that mention this as a cardinality issue, and offer some undocumented methods to try and combat.
    Can someone please give me some advice or tips on this. Thanks!
    I have created a simple example using the emp table below to help illustrate what I am doing.
    DROP TYPE EMP_TYPE;
    DROP TYPE EMP_SEQ;
    CREATE OR REPLACE TYPE EMP_SEQ AS OBJECT
           ( EMPNO                                         NUMBER(10),
             ENAME                                         VARCHAR2(100),
             JOB                                           VARCHAR2(100));
    CREATE OR REPLACE TYPE EMP_TYPE AS TABLE OF EMP_SEQ;
    CREATE OR REPLACE FUNCTION get_emp return EMP_TYPE PIPELINED AS
    BEGIN
      FOR cur IN (SELECT
                    empno,
                    ename,
                    job
                  FROM emp
             LOOP
               PIPE ROW(EMP_SEQ(cur.empno,
                                cur.ename,
                                cur.job));
             END LOOP;
             RETURN;
    END get_emp;
    create OR REPLACE view EMP_VIEW as select * from table(get_emp());
    SELECT A.empno, A.empname, A.job, B.sal
    FROM EMP_VIEW A, EMP B
    WHERE A.empno = B.empno AND
          B.mgr = '7839'

    I am on DB 11.2.0.2 and have sparingly used pipelined table functions but am considering it for a project that has some fairly big (lots of rows) sized tables
    Which begs the question: WHY? What PROBLEM are you trying to solve and what makes you think using pipelined table functions is the best way to solve that problem?
    The lack of information about cardinality is the likely root of the degradation you noticed as already mentioned.
    But that should be a red flag about pipelined functions in general. PIPELINED functions hide virtually ALL KNOWLEDGE about the result set that is produced; cardinality is just the tip of the iceberg. Those functions pretty much say 'here is a result set' without ANY information about the number of rows (cardinality), distinct values for any columns, nullability of any columns, constraints that might apply to any columns (foreign key, primary key) and so on.
    If you are going to hide all of that information from Oracle that would normally be used to help optimize queries and select the appropriate execution plan you need to have a VERY good reason.
    The use of PIPELINED functions should be reserved for those use cases where ordinary SQL and PL/SQL cannot get the job done. That is they are a 'special case' solution.
    The classic use case for those functions is for the transform stage of ETL where multiple pipelined functions are chained together: one function feeds its rows to the next function which feeds its rows to another and so on. Each of those 'chained' functions is roughly analogous to a full table scan of the data that often does not need to be joined to other data except perhaps low volumn lookup tables where the data may even be cached.
    I suggest that any exploratory or prototyping work you do use standard relational tables until such point as you run into a problem whose solution might require PIPELINED functions to solve.

  • Should i use pipeline in order to get data from file path to create metadata?

    Hi,
    we use sharepoint 2013 to index file share and the folders structure represents data as project name / subject etc.
    Do you reccomend use pipeline capabilities in order to create metadata from those folders name? (so we will be able to use it as refiners later).
    In case so - how to do it?
    thanks
    keren tsur

    Hi  Keren,
    According to your description, my understanding is that you want to convert folder structure to SharePoint metadata.
    For achieving your demand, you can use the tool in codeplex:
    Folders To SharePoint Metadata Migrator (Folders2SP)
    Also you can have a look at the blog:
    http://en.community.dell.com/techcenter/sharepoint-for-all/w/wiki/5443.converting-folder-structure-to-sharepoint-metadata.aspx
    http://stackoverflow.com/questions/22411014/sharepoint-script-to-automatically-import-documents-from-a-network-share-on-a-r
    http://en.share-gate.com/blog/map-folder-names-to-sharepoint-metadata
    Best Regards,
    Eric
    Eric Tao
    TechNet Community Support

  • Use PipeLine function as datasource

    Hi all.
    Does anybody use PipeLine function as datasource for Bi EE ? Do you have any experience ?

    For more discuss :
    I was read article from Venkatakrishnan
    http://oraclebizint.wordpress.com/2007/09/21/oracle-bi-ee-101323-ref-cursors-and-pipelined-functions/
    and in that case all lok's fine and work. But in my case I was neded disable aggregate and order by functionality , becouse have some Issues. can anybody comment this situation :What's wrong in using PipeLine and BIee ?

  • Trouble using pipelined function in an select list lov query

    I'm trying to use a pipelined function in a select list lov query but i cet the error
    "LOV query is invalid, a display and a return value are needed, the column names need to be different. If your query contains an in-line query, the first FROM clause in the SQL statement must not belong to the in-line query."
    my query is as follows :
    SELECT gt.navn d, gt.GEOGRAPHY_TYPE_ID r
    FROM GEOGRAPHY_TYPE gt
    WHERE gt.kode NOT IN (1)
    and gt.kode in (select lov_value from table(RAPPORT_FILTER_PKG.GET_RAPPORT_FILTER_VALUE_PIP (
    SYS_CONTEXT ('rapport_filter_ctx','filter_id'),'GEOGRAPHY_TYPES')) )
    ORDER BY gt.navn DESC
    if i use a discrete values '80' instead of the call to
    SYS_CONTEXT ('rapport_filter_ctx','filter_id')
    i don't get eny errors, but then the LOV isn't as dynamic as i has to be
    any idears???
    Edited by: [email protected] on Dec 1, 2008 8:50 AM
    Edited by: [email protected] on Dec 1, 2008 11:17 AM

    nope that doesn't do it either
    contains a syntax errror at
    SYS_CONTEXT (('rapport_filter_ctx',:P500_RAPPORT_FILTER_ID),'GEOGRAPHY_TYPES'))
    my theory is that it's got something to do with the way APEX binds values because
    the query
    SELECT gt.navn d, gt.GEOGRAPHY_TYPE_ID r
    FROM GEOGRAPHY_TYPE gt
    WHERE gt.kode NOT IN (1)
    and gt.kode in (select r from table(RAPPORT_FILTER_PKG.GET_RAPPORT_FILTER_VALUE_PIP ('80','GEOGRAPHY_TYPES')) )
    ORDER BY gt.navn DESC
    works fine in both TOAD and in APEX but as soon as i replace th '80' with :P500_RAPPORT_FILTER_ID then, apex won't accept the code??????
    Edited by: [email protected] on Dec 3, 2008 7:54 AM

  • Using pipelined functions with bind variables in Apex...

    Hy all:
    I have a table which has about 10 million records and it is hanging up the system when it is trying to retrieve the data from that table... so what I have done is I created a pripelined
    function and then trying to retrieve data using an SQL statement ... when I try to use a bind variable to filter by the date and location it is binding according to the location
    but not by date ... can anyone help me in this please!!
    Help greatly appreciated !
    Thanks in advance !

    Hi Denes:
    Create or replace type ohe1 as object (
    IMLITM NCHAR(50), IMAITM NCHAR(50), IMDSC1 NCHAR(60), COUNCS NUMBER(22), LIPQOH NUMBER(22),
    LIMCU NCHAR(24), LILOCN NCHAR(40), LILOTN NCHAR(60), LILOTS NCHAR(2), IOMMEJ NUMBER(22))
    CREATE OR REPLACE TYPE OHE AS TABLE OF Ohe1
    CREATE OR REPLACE FUNCTION GET_ohe
    return OHE PIPELINED
    IS
    m_rec ohe1:= ohe1 (NULL,NULL,NULL,0,0,NULL,NULL,NULL,NULL,0);
    begin
    for c in (select f1.LITM LITM, F1.AITM AITM, F1.DSC1 DSC1, F5.UNCS UNCS,
    F21.QOH QOH, F21.MCU MCU, F21.LOCN LOCN, F21.LOTN LOTN, F21.LOTS LOTS,
    F8.MEJ MEJ FROM F1 F1, F2 F2, F21 F21, F5 F5, F8 F8
    WHERE (F5.EDG='07') AND (F21.QOH != 0) AND F2.IBITM = F1.IMITM
    AND F21.ITM = F2.ITM AND F21.ITM = F5.ITM AND F21.MCU = F5.MCU
    AND F21.MCU = F2.MCU AND F21.LOTN = F8.LOTN AND F21.MCU = F8.MCU)
    loop
    m_rec.LITM:=c.LITM;
    m_rec.AITM:=c.AITM;
    m_rec.DSC1:=c.DSC1;
    m_rec.UNCS:=c.UNCS;
    my_record.QOH:=c.QOH;
    my_record.MCU:=c.MCU;
    my_record.LOCN:=c.LOCN;
    my_record.LOTN:=c.LOTN;
    my_record.LOTS:=c.LOTS;
    my_record.MEJ:=c.MEJ;
    PIPE ROW (my_record);
    end loop;
    return;
    end;
    select LITM , AITM , DSC1 , UNCS*.0001 UNCS, QOH*.0001 QOH, (UNCS*.0001)*(QOH*.0001) AMOUNT,
    MCU MCU, LOCN LOCN, LOTN LOTN, LOTS LOTS, jdate(DECODE(MEJ,0,100001,MEJ)) MEJ FROM
    TABLE (GET_ohe)
    WHERE trim(LIMCU)= TRIM(:OHE_BRANCHID)
    AND (jdate(DECODE(MEJ,0,10001,MEJ)) >=:FROMEXPDT
    AND jdate(DECODE(MEJ,0,10001,MEJ)) <=:TOEXPDATE)
    The MEJ is a julian date and I am trying to convert it into a date ..... using the function jdate! and the pipelined function is created without any errors
    and I am able to get the data with correct branch location bind variable but only problem is it is not binding the date filters in the sql.....
    Thanks
    Edited by: user10183758 on Oct 16, 2008 8:17 AM

  • Using Pipelined Functions

    Hi,
    Can any one please provide me a good example to try out pipelined function in oracle pl/sql ?
    Thanks

    I'm curious. In your biography you state "I am a software programmer working in IT field from last 7-8 years. I am a OCP in Application Development Track"
    So how come that you are not familiar with Oracle Documentation and it's full text search capability, which would have given you a reference, such as this?
    C.

  • Does use of pipelined/pipe row have a limitation on amount of data returned

    We are using Oracle 9i.
    We have an existing function that pipes data. Select * from table(cast(schema.my_pkg.get_data() as schema.t_my_data_tab))
    Function runs, but only returns around 10,000 records. There are actually about 50,000 records to be returned. I do not believe it is just erroring out one a single and stopping because I sorted my cursor multiple ways to show that in one sort certain records do not show, but when sorted another way they do. It is still possible something is stopping it - I will continue looking. But I would like to know if anyone is aware of any size limitations in the amount of data to be piped? I've looked at the types created & the function and do not see anything that was set for a size. Any ideas?
    I apologize I do not know all the correct terms to use. I am taking this over from someone else - hopefully an example of their code will help. Thank you very much.
    FUNCTION get_data(p_id NUMBER DEFAULT NULL)
    RETURN t_my_data_tab PIPELINED
    AS
    v_temp VARCHAR2(10);
    BEGIN
    PIPE ROW
    (t_links_contracts_rec
    (...data values....)
    RETURN;
    END;

    I'm not sure really, if there was a limitation I believe it would be documented and even would raise an exception. I've only used pipelined table function for smallish sets of data. I can't simulate much as I only have access to 10g and 11g here, so I ran a query with 50,000, but I'm only posting its count for obvious reasons.
    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0
    Connected as fsitja
    SQL> create or replace type t_tab is table of number;
      2  /
    Type created
    SQL>
    SQL> create or replace function test_pipe return t_tab pipelined as
      2  begin
      3    for i in 1 .. 50000
      4    loop
      5      pipe row (i);
      6    end loop;
      7  end;
      8  /
    Function created
    SQL> select count(*) from table(test_pipe);
      COUNT(*)
         50000
    SQL> Some docs referencing the subject from 9i:
    http://download.oracle.com/docs/cd/B10501_01/appdev.920/a96624/08_subs.htm
    http://download.oracle.com/docs/cd/B10501_01/appdev.920/a96595/dci12tbl.htm

  • Interactive report on view based on pipelined table function.

    Hi,
    I want to build an Interactive Report on a view.
    The view definition contains a select on a pipelined table function. I use context functionality to pass paramaters to the pipelined table function.
    A plain select * from #my_view# in SqlPlus results in 121 different rows.
    However, If I base my Interactive report on this view, I get 15 repeated rows (all the same).
    Is it possible to use pipelined table functionality on an Interactive report? I can't seem to get it working.
    If I use the following approach (http://rakeshjsr.blogspot.nl/2010/10/oracle-apex-interactive-report-based-on.html) I do get results, but I can't use this solution for a reason that's not relevant.

    Hello,
    Is it possible to use pipelined table functionality on an Interactive report? I can't seem to get it working. I have used it in one instance and it works fine. However I was passing the values to pipe-lined function directly.
    IR Query..
    SELECT * FROM TABLE(fn_pipeline(:P1_ITEM_NAME))Call pipe-lined function from IR query directly (instead of using view)
    Try sending values to Pipe-lined function directly. In-case if the problem is with setting and getting values from the context?
    Regards,
    Hari

  • How can I optimally stream data to disk at 5 MS/s on 4 channels using a PCI-6110?

    I am using a PCI-6110 to acquire data streaming from a camera. Data arrives on all four analog input channels at 5 MHz. An A2D clock is attached to PFI8, also originating from the camera and operating at 5 MHz. Finally, there is a Valid-data signal from the camera that signals when the data stream coming in on the four analog channels is actual data (each Validate pulse is about 132 samples wide). This is attached to PFI0. Ideally, I would like to have a program that captures data at the full rate and is correctly synchronized with the Valid-data line. It should also be able to stream to disk for several seconds at least before pausing for the buffer.
    Though I'm something of an inexper
    ienced programmer, I have attempted programs both in LabView and C (using DAQmx) to resolve this, but I have experienced much slower behavior than I'd like. In LabView, this seems to be the result of slow streaming to disk, such that I have to pause and reset the task every frame (132x512 samples per channel). Using DAQmx in C, I have found it necessary to restart the task after every line (132 samples per channel) in order to correctly trigger from the Validata pulse. Both are far from optimal. I would appreciate any advice that those of you with more experience reading at very high rates from this card may have to offer.
    Thanks,
    Steven Israel
    Duke University

    I'm not sure if I fully understand your application, but maybe some of these hints will help.
    First your streaming to disk rate is going to vary widely depending on your system. Sometimes using a faster processor helps, but most of the time using a faster hard drive will give you the best performance increase.
    Second, writing less data will often have a dramatic impact in streaming to disk applications. If you're reading back scaled data, I would strongly recommend switching to unscaled or raw reads and storing off the scaling constants so you can scale the data off line. This could reduce the required streaming to disk bandwidth by a factor of 4 alone.
    Third, since the 6110 is a 12 bit device, you can try compressing two 12 bit samples into one 24 b
    it piece of data. This will allow you to store in three bytes what used to take four.
    Last, you might consider using your signal on PFI0 as a pause trigger. Depending on the frequency of the pulses on your Valid-data signal, this could significantly reduce the required bandwidth of both the PCI bus and your hard drive. However, since the 6110 uses pipelined ADCs, you need to be careful if the time between valid data pulses is greater than one millisecond. This would violate the minimum sampling frequency of the board and the points in the pipeline that are returned after unpausing (3 in this case) might not be digitized at the full accuracy specification for the device. Because of the pipelining, you also need to be careful how you correlate the data. The first time you unpause for the Valid-data pulse, the first three points will be garbage points. The second and subsequent times you unpause, the first three points are really the last three points from the previous Valid-dat
    a pulse. See the Device Considerations->Timing chapter in the NI-DAQmx Help file for more information on timing considerations with pipelined ADCs.
    I hope this information helps. Good luck!

  • Pipelined function in reports6i....1

    Hi,
    i have a problem with using pipelined function in
    reports6i.
    can i use pipelined function in reports6i.
    The following code is used to return rows
    based on the parameter i am passing:
    my package declaration and body is as follows:
    PACKAGE P_RET_ARRAY IS
    TYPE array1 AS TABLE OF NUMBER;
    FUNCTION ret_array(str VARCHAR2)
    RETURN ARRAY1 PIPELINED;
    END;
    PACKAGE BODY P_RET_ARRAY IS
    FUNCTION ret_array(str VARCHAR2)
    RETURN ARRAY1 pipelined
    IS
    str1 VARCHAR2(100);
    num1 NUMBER(5);
    BEGIN
    str1 := str ||',';
    WHILE LENGTH(str1)>=0
    LOOP
    num1 := TO_NUMBER(SUBSTR(str1,1,INSTR(str1,',',1)-1));
    pipe (num1);
    str1 := SUBSTR(str1,INSTR(str1,',',1)+1);
    END LOOP;
    --NULL;
    RETURN ;
    END;
    END;
    I got the above piece of code from one of the oracle forums:
    now if i am trying to use this code in my reports6i it's not recognizing
    pipelined.any suggestions plz .
    it's urgent....

    Hi,
    i have a problem with using pipelined function in
    reports6i.
    can i use pipelined function in reports6i.
    The following code is used to return rows
    based on the parameter i am passing:
    my package declaration and body is as follows:
    PACKAGE P_RET_ARRAY IS
    TYPE array1 AS TABLE OF NUMBER;
    FUNCTION ret_array(str VARCHAR2)
    RETURN ARRAY1 PIPELINED;
    END;
    PACKAGE BODY P_RET_ARRAY IS
    FUNCTION ret_array(str VARCHAR2)
    RETURN ARRAY1 pipelined
    IS
    str1 VARCHAR2(100);
    num1 NUMBER(5);
    BEGIN
    str1 := str ||',';
    WHILE LENGTH(str1)>=0
    LOOP
    num1 := TO_NUMBER(SUBSTR(str1,1,INSTR(str1,',',1)-1));
    pipe (num1);
    str1 := SUBSTR(str1,INSTR(str1,',',1)+1);
    END LOOP;
    --NULL;
    RETURN ;
    END;
    END;
    I got the above piece of code from one of the oracle forums:
    now if i am trying to use this code in my reports6i it's not recognizing
    pipelined.any suggestions plz .
    it's urgent....

  • How to copy file to another server from database using FTP in oracle

    How to copy file to another server from database using FTP in oracle.
    Please do the needfaul.

    Billy  Verreynne  wrote:
    BluShadow wrote:
    Not to mention that some FTP servers can return more than one return message per operation whereas others may return one message for the same operation.I had the problem using the LIST command to determine if a file exists on the server. Cannot be determined via the FTP server's return code. Which means parsing and checking the text response from the server to the command. And this vary from server to server.
    But the basics were quite easy to code. The entire package is 500 lines, includes comments and blank lines for formatting, and supports the basic FTP client command set. Not really a complex piece of software to write - but I found that many developers seem to think that writing network socket software is complex. Not really the case...Mine's a big larger, but incorporates functionality similar to what Chris provided in his, such as being able to use SQL to query a remote file using pipelined functions, or functionality to write the results of a query directly to a remove file.
    :)

  • Pipelined function with lagre amount of data

    We would like to use pipelined functions as source of the select statements instead of tables. Thus we can easily switch from our tables to the structures with data from external module due to the need for integration with other systems.
    We know these functions are used in situations such as data warehousing to apply multiple transformations to data but what will be the performance in real time access.
    Does anyone have any experience using pipelined function with large amounts of data in the interface systems?

    It looks like you have already determined that the datatable object will be the best way to do this. When you are creating the object, you must enter the absolute path to your spreadsheet file. Then, you have to create some type of connection (i.e. a pushbutton or timer) that will send a true to the import data member of the datatable object. After these two things have been done, you will be able to access the data using the A3 - K133 data members.
    Regards,
    Michael Shasteen
    Applications Engineering
    National Instruments
    www.ni.com/ask
    1-866-ASK-MY-NI

  • How do you pass parameters to a Pipelined function?

    I am using Oracle 10G and the ODP .NET 32 bit client.
    I am facing an issue trying to use variable binding with a pipeline function in Oracle. I am using ODP .NET for connecting to the database.
    If you want to be familiar with PIPELINED functions, you can read [this  blog.|http://oradim.blogspot.com/2007/10/odpnet-tip-using-pipelined-functions.html]
    I have very similar code with a difference. My function takes in two parameters that I need to pass to get the table. This is working in SQLPLUS without any issues.
    In my C# code, however things change. My function no longer returns a recordset (data reader), if I use the standard method of assigning the parameters.
    The code will work if I concat the variables in a string.
    Here is the example that doesn't work.
            static OracleDataReader fetchData(OracleConnection oc, string strPONumber)
                try
                    OracleCommand od = oc.CreateCommand();
                    od.CommandType = System.Data.CommandType.Text;
                    od.CommandText = "select * from table(pkg_fetchPOInfo.getPORowsTable(:1,:2))";
                    OracleParameter op1 = new OracleParameter();
                    op1.ParameterName = "1";
                    op1.OracleDbType = OracleDbType.Varchar2;
                    op1.Direction = System.Data.ParameterDirection.Input;
                    op1.Size = 7;
                    op1.Value = strPONumber;
                    od.Parameters.Add(op1);
                    OracleParameter op2 = new OracleParameter();
                    op2.ParameterName = "2";
                    op2.OracleDbType = OracleDbType.Varchar2;
                    op2.Direction = System.Data.ParameterDirection.Input;
                    op2.Size = 3;
                    op2.Value = "US";
                    od.Parameters.Add(op2);
                    OracleDataReader or = od.ExecuteReader();
                    return or;
                catch (Exception e)
                    Console.WriteLine("Error " + e.ToString());
                    return null;
            }Here is the example that does.
          static OracleDataReader fetchData(OracleConnection oc, string strPONumber)
                try
                    OracleCommand od = oc.CreateCommand();
                    string formSQL = "Select * from table(pkg_fetchPOInfo.getPORowsTable('"+strPONumber+"','US'))";
                    od.CommandType = System.Data.CommandType.Text;
                    od.CommandText = formSQL;
                    OracleDataReader or = od.ExecuteReader();
                    return or;
                catch (Exception e)
                    Console.WriteLine("Error " + e.ToString());
                    return null;
            }

    throw it into an anonymous block and it should work for you.
    --create or replace type varcharTableType as table   of varchar2 (4000);
    create or replace
    PACKAGE TESTP AS
      function TESTPIPE(nr in number, nr2 in number) return varchartabletype pipelined;
    END TESTP;
    CREATE OR REPLACE
    PACKAGE BODY TESTP AS
      function TESTPIPE(nr in number, nr2 in number) return varchartabletype pipelined AS
          CURSOR TESTPIPE_cur
           IS
              SELECT (level + 1) datam
                FROM dual
              connect by level < nr;
         vtt varchartabletype ;
      BEGIN
             OPEN TESTPIPE_cur;
               LOOP
                  FETCH testpipe_cur
                  BULK COLLECT INTO vtt LIMIT nr2;
                  FOR indx IN 1 .. vtt.COUNT
                  LOOP
                      Pipe Row ( vtt( indx ) )  ;
                  END LOOP;
                  EXIT WHEN testpipe_cur%NOTFOUND;
               END LOOP;
      END TESTPIPE;
    END TESTP;
           public static void pipeTest()
                String conString = GetConnectionString();
                OracleConnection _conn = new OracleConnection(conString);
                _conn.Open();
                OracleCommand oCmd = new OracleCommand();
                oCmd.CommandText = "begin open :crs for Select * from table(testp.testpipe(:nr,:nr2)); end;";
                oCmd.CommandType = CommandType.Text ;
                oCmd.Connection = _conn;
                OracleParameter crs = new OracleParameter();
                crs.OracleDbType = OracleDbType.RefCursor;
                crs.Direction = ParameterDirection.Output;
                crs.ParameterName = "crs";
                oCmd.Parameters.Add(crs);
                OracleParameter nr = new OracleParameter();
                nr.OracleDbType = OracleDbType.Int64;
                nr.Direction = ParameterDirection.Input ;
                nr.ParameterName = "nr";
                nr.Value = 25;
                oCmd.Parameters.Add(nr);
                OracleParameter nr2 = new OracleParameter();
                nr2.OracleDbType = OracleDbType.Int64;
                nr2.Direction = ParameterDirection.Input;
                nr2.ParameterName = "nr2";
                nr2.Value = 10;
                oCmd.Parameters.Add(nr2);
                using (OracleDataReader MyReader = oCmd.ExecuteReader())
                    int ColumnCount = MyReader.FieldCount;
                    // get the data and add the row
                    while (MyReader.Read())
                        String s = MyReader.GetOracleValue(0).ToString();
                        Console.WriteLine(string.Format("i={0}", s));
                Console.ReadLine();
            }

Maybe you are looking for

  • SpryTabbedPanels2 - how to show specific tab

    I have got SpryTabbedPanels 2 on a product web page, and the panels consist of: Product details (tab 1) -- Default -- Product Specs (tab 2) Product Accessories (tab 3) Product Downloads (tab 4) Currently, I have it set to default so that it shows the

  • No print cartridge m1005 mfs

    replaced with new print cartridge but the printer shows "no print cartridge"   does my printer needs installation

  • EA4500 router and media server file limit

    I purchased an EA4500 router yesterday and it arrived today. Set it up, copiued my media library over to a new Seagate Expansion drive (2 TB) and it currently is filled with 320GB of files. Music folder, Pictures folder and Video folder. Thing is onl

  • Is it possible to create a reportviewer directly in javascript?

    My scenario: I want to be able to use my custom server (C#, visual studio 2013) application to generate a report based on pre-built Crystal Report 2013 .rpt's. I then want to display that in the front end of my website somehow, using javascript. The

  • DomHandle can not fetch special characters like , or &......

    hi friends...... I'm using following packages........... When I store special characters....like < , > or &......DomHandle can not fetch the values from xml file......why so??? Anybody faced same problem?????? import javax.xml.transform.*; import jav