Convert cursor to row object

I have a pipeline function as
row_t AS OBJECT(...);
table_t IS TABLE OF row_t
func_a RETURN table_t PIPELINED AS ...
And another function which will take row_t as parameter:
func_b(row_in row_t)
Now, in a procedure, I would like to pass each row from pipeline function to func_b
FOR c IN (SELECT * FROM TABLE(func_a())) LOOP
-- The following code gives compilation error,
-- How do I convert c to row_t type???
some_var := func_b(c);
END LOOP;
Any suggestion? Thanks all in advance!

d9a7751a-2a6b-4393-b966-ca55209f77d3 wrote:
I have a pipeline function as
row_t AS OBJECT(...);
table_t IS TABLE OF row_t
func_a RETURN table_t PIPELINED AS ...
And another function which will take row_t as parameter:
func_b(row_in row_t)
Now, in a procedure, I would like to pass each row from pipeline function to func_b
FOR c IN (SELECT * FROM TABLE(func_a())) LOOP
-- The following code gives compilation error,
-- How do I convert c to row_t type???
some_var := func_b(c);
END LOOP;
Any suggestion? Thanks all in advance!
Doesn't seem like a very "smart" idea to loop through the pipelined function and call func_b. Why not just incorporate the pipelined function directly in to func_b ?
Aside from that, I think all you need to do is reference the value in your current cursor, you selected * from the pipelined function so the column should be COLUMN_VALUE by default. So you would pass c.column_value ... not 100% sure if that'll work. If you would have posted a small and simple piece of code I could run on my Oracle instance I'd give you a definitive answer
Cheers,

Similar Messages

  • Convert columns to row equivalent to stragg function in oracle sql

    Hi,
    Sorry i forgot my Oracle version :
    SQL> select * from v$version;
    BANNER
    Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
    PL/SQL Release 10.2.0.3.0 - Production
    CORE    10.2.0.3.0      Production
    TNS for 64-bit Windows: Version 10.2.0.3.0 - Production
    NLSRTL Version 10.2.0.3.0 - ProductionI searched in google but i didn't found the solution.
    I looking for a function in discoverer equivalent to stragg sql function.
    Note : stragg function convert columns to rows.
    Thanks
    SELECT   deptno, stragg ('-' || ename)
        FROM emp_test
    GROUP BY deptno;
        DEPTNO STRAGG_STR                                                 
            10 -CLARK-KING-MILLER                                         
            20 -SMITH-FORD-ADAMS-SCOTT-JONES                              
            30 -ALLEN-BLAKE-MARTIN-TURNER-JAMES-WARD                      
    3 rows selected.Edited by: Salim Chelabi on 2010-01-29 08:32

    Hi again,
    *1- I created  my function in my schema.*
    CREATE OR REPLACE TYPE t_string_agg AS OBJECT
      g_string  VARCHAR2(32767),
      STATIC FUNCTION ODCIAggregateInitialize(sctx  IN OUT  t_string_agg)
        RETURN NUMBER,
      MEMBER FUNCTION ODCIAggregateIterate(self   IN OUT  t_string_agg,
                                           value  IN      VARCHAR2 )
         RETURN NUMBER,
      MEMBER FUNCTION ODCIAggregateTerminate(self         IN   t_string_agg,
                                             returnValue  OUT  VARCHAR2,
                                             flags        IN   NUMBER)
        RETURN NUMBER,
      MEMBER FUNCTION ODCIAggregateMerge(self  IN OUT  t_string_agg,
                                         ctx2  IN      t_string_agg)
        RETURN NUMBER
    SHOW ERRORS
    CREATE OR REPLACE TYPE BODY t_string_agg IS
      STATIC FUNCTION ODCIAggregateInitialize(sctx  IN OUT  t_string_agg)
        RETURN NUMBER IS
      BEGIN
        sctx := t_string_agg(NULL);
        RETURN ODCIConst.Success;
      END;
      MEMBER FUNCTION ODCIAggregateIterate(self   IN OUT  t_string_agg,
                                           value  IN      VARCHAR2 )
        RETURN NUMBER IS
      BEGIN
        SELF.g_string := self.g_string || ',' || value;
        RETURN ODCIConst.Success;
      END;
      MEMBER FUNCTION ODCIAggregateTerminate(self         IN   t_string_agg,
                                             returnValue  OUT  VARCHAR2,
                                             flags        IN   NUMBER)
        RETURN NUMBER IS
      BEGIN
        returnValue := RTRIM(LTRIM(SELF.g_string, ','), ',');
        RETURN ODCIConst.Success;
      END;
      MEMBER FUNCTION ODCIAggregateMerge(self  IN OUT  t_string_agg,
                                         ctx2  IN      t_string_agg)
        RETURN NUMBER IS
      BEGIN
        SELF.g_string := SELF.g_string || ',' || ctx2.g_string;
        RETURN ODCIConst.Success;
      END;
    END;
    SHOW ERRORS
    CREATE OR REPLACE FUNCTION string_agg (p_input VARCHAR2)
    RETURN VARCHAR2
    PARALLEL_ENABLE AGGREGATE USING t_string_agg;
    SHOW ERRORS
    *2- I ran my query in my schema with sqlplus.*
    SELECT deptno,ename,sal, string_agg(ename)over(partition by deptno) AS employees
    FROM   emp_test
    order by deptno;
        DEPTNO ENAME             SAL EMPLOYEES                                        
            10 CLARK            2450 CLARK,KING,MILLER                                
            10 KING             5000 CLARK,KING,MILLER                                
            10 MILLER           1300 CLARK,KING,MILLER                                
            20 JONES            2975 JONES,FORD,ADAMS,SMITH,SCOTT                     
            20 FORD             3000 JONES,FORD,ADAMS,SMITH,SCOTT                     
            20 ADAMS            1100 JONES,FORD,ADAMS,SMITH,SCOTT                     
            20 SMITH             800 JONES,FORD,ADAMS,SMITH,SCOTT                     
            20 SCOTT            3000 JONES,FORD,ADAMS,SMITH,SCOTT                     
            30 WARD             1250 WARD,TURNER,ALLEN,JAMES,BLAKE,MARTIN             
            30 TURNER           1500 WARD,TURNER,ALLEN,JAMES,BLAKE,MARTIN             
            30 ALLEN            1600 WARD,TURNER,ALLEN,JAMES,BLAKE,MARTIN             
            30 JAMES             950 WARD,TURNER,ALLEN,JAMES,BLAKE,MARTIN             
            30 BLAKE            2850 WARD,TURNER,ALLEN,JAMES,BLAKE,MARTIN             
            30 MARTIN           1250 WARD,TURNER,ALLEN,JAMES,BLAKE,MARTIN             
    14 rows selected.
    *3- I import this function in discoverer administration*
    4- My problem :When i use the function string_agg(ename)over(partition by deptno) in discover deskto i got the error you can't use over in this place.
    Any ideas.
    Thank in advance.
    Regards Salim.

  • Error : while converting a WD ABAP object into SAP Transaction

    Hi,
    I am trying to converting a WD ABAP object into SAP Transaction but i am getting the following error while executing the transaction :
    Network Access Message: The page cannot be displayed
    Technical Information (for Support personnel)
    Error Code: 502 Proxy Error. The specified Secure Sockets Layer (SSL) port is not allowed. ISA Server is not configured to allow SSL requests from this port. Most Web browsers use port 443 for SSL requests. (12204)
    IP Address: 10.114.6.144
    Date: 4/7/2011 10:41:
    Please help.

    > ISA Server is not configured to allow SSL requests from this port. Most Web browsers use port 443 for SSL requests. (12204)
    This seems to be your specific network configuration.  It seems that your corporate network is blocking HTTPS requests which don't use port 443. Your ABAP system is configured to use a port other than 443. Either talk to your basis admins about changing your ABAP system configuration to use port 443 or talk to your network administrators to allow whichever port the ABAP system is running on.

  • Error in Single Row Object Type

    Hi Buddies,
    I have created 2 single row Object Type.It shows as Follows;
    SQL> create or replace type dob_date as object
    *2 (Day number,*
    *3 Month varchar2(12),*
    *4 year Number);*
    *5 /*
    Type created.
    SQL> create or replace type names as object
    *2 (Fname varchar2(10),*
    *3 MName varchar2(10),*
    *4 LName varchar2(10));*
    *5 /*
    Type created.
    SQL> create table employee_details (Emp_no number,name names,dob dob_date,manager_name varchar2(15),
    sal number,dept_name varchar2(10));
    Table created.
    And i inserted the data ..
    SQL> insert into employee_details values(1,names('Sankara','narayanan','C'),dob_date(26,'MAY',1985);
    1 row created.
    If i update the column it shows a below error;
    SQL> update employee_details set names.LName='Sank' where emp_no=1;
    update employee_details set names.LName='Sank' where emp_no=1
    ERROR at line 1:
    ORA-00904: "NAMES"."LNAME": invalid identifier
    Can anyone help me. Thanks in Advance
    Regards
    Karthick
    Edited by: Karthick CS on Jan 29, 2009 2:46 PM
    Edited by: Karthick CS on Jan 29, 2009 2:47 PM

    CREATE OR REPLACE TYPE dob_date AS OBJECT(
    DAY NUMBER,
    MONTH VARCHAR2(12),
    YEAR NUMBER
    drop type dob_date
    CREATE OR REPLACE TYPE names AS OBJECT(
    fname VARCHAR2(10),
    mname VARCHAR2(10),
    lname VARCHAR2(10)
    create table employee_details (Emp_no number,name names,dob dob_date,manager_name varchar2(15),
    sal number,dept_name varchar2(10));
    insert into employee_details values(1,names('Sankara','narayanan','C'),dob_date(26,'MAY',1985),'manager',12312,'maths');
    update employee_details ed set ed.name.lname='Sank' where emp_no=1;
    update employee_details ed set ed.dob.DAY='27' where emp_no=1;
    updated sucessfully
    use the column name to refer...not the type name
    Thanks
    Muthu

  • How to update Row Object in JSP Page? urgent!!!

    HI,
    I have a JSP Page and I have used jbo:DataSource and jbo:ApplicationModuleTags.
    Step 1: I have created a oracle.jbo.ViewObject view using
    view = ds.getRowSet().getViewObject(); and executed query using view.executeQuery()
    Step 2: I access the Row Object for this view like this
    Row rs = ds.getRowSet().getCurrentRow().
    Step 3: I try to set the attributes for this Row using setAttribute methods like this
    rs.setAttribute("empName","James");
    Step 4: Now I want to update this row. How to update this???
    If i need to get a Transaction object, which object's getTransaction I should use?
    Note: Please note that I haven't used <jbo:Row > tags to access my row. I simply get the Row object from view and want to update certain attributes and commit to database.
    Thanks
    Hari

    Hi Harihara!
    I think the record pointer is still before the first row, because you just executed the query.
    Try one the following statements instead of 'Row rs = ds.getRowSet().getCurrentRow()':
    Row rs = view.first();
    or
    Row rs = ds.getRowSet().first();
    And don't forget to commit your changes if the master process doesn't take care of it already!
    Good Luck!
    Rolf van Deursen.

  • How to find if cursor returned rows

    If i have a procedure like
    create procedure test as
    cursor cur_test is
    select col
    from table;
    begin
         delete from tab1 a;
         for var_cur_test in cur_test
         loop
              insert into temp
              values(var_cur_test.col);
         end loop;
         commit;
    end;
    How do I check if the cursor has returned any rows?
    I dont want to delete from tab1 if cursor 'cur_test' does not return any rows and I want to exit out of the proc.
    If the cursor returns rows > 0 then I want to delete and do the insert.
    Thanks for the help.

    The scenario is like this.
    There is a schema A which has to run a process and populate its tables and at the end of the process(java program) run the procedure which is in schema B to pull data from schema A and populate the tables in schema B. If there is a case where Schema A's process fails( then Schema A's tables end up with no data), the process is still running the procedure in schema B and deleting the data in tables with no data being inserted.
    So, I have to check in the procedure if the tables in Schema A have any data before the process can run the proc.
    I tried the solution you provided but it returns no data
    CREATE OR REPLACE PROCEDURE MMA_TEST
    VAR_CONTRACT_ID VARCHAR2
    AS
    CURSOR CUR_TEST IS
    SELECT CMS_CONTRACT_ID,CMS_PLAN_ID
    FROM MMA_PLANS
    WHERE CMS_CONTRACT_ID = VAR_CONTRACT_ID;
    BEGIN
         for var_cur_test in cur_test
         loop
              if (cur_test%rowcount = 1) then
              delete from temp ;
              end if ;
              insert into temp
              values(var_cur_test.cms_contract_id,var_cur_test.cms_plan_id);
         end loop;
    end;

  • To convert columns into row

    Hi All,
    I need help in building view which actually can show columns data as row.
    e.g.
    row is as follows
    Name Age Salary
    ABC 25 10000
    BBC 28 12000
    The above tables data I want to get as
    Name ABC BBC
    Age 25 28
    Salary 10000 12000
    Thanks in advance.

    Even if I don't really understand such requirement, I wrote some times ago such function to play around that :
    Re: Converting Columns into rows
    Nicolas.

  • How to convert columns to rows

    I have 70 columns and I need to convert them into rows. Please help!
    Currently, it is showing as listed below
    message 1 message 2 message 3 message 4 message 5 .......... message 70
    system 1 20 10 40 60 100
    system 2 40 30 50 80 110
    system 3 60 60 70 90 120
    The desire output
    system 1 system 2 system 3
    message 1 20 40 60
    message 2 10 30 60
    message 3 40 50 70
    message 70

    Something like...
    SQL> ed
    Wrote file afiedt.buf
      1  select decode(rn,1,'Empno :'||empno
      2                  ,2,'Ename ('||empno||') :'||ename
      3                  ,3,'Job ('||empno||') :'||job
      4               ) as col
      5  from emp
      6       cross join (select rownum rn from dual connect by rownum <= 3)
      7* order by empno, rn
    SQL> /
    COL
    Empno :7369
    Ename (7369) :SMITH
    Job (7369) :CLERK
    Empno :7499
    Ename (7499) :ALLEN
    Job (7499) :SALESMAN
    Empno :7521
    Ename (7521) :WARD
    Job (7521) :SALESMAN
    Empno :7566
    Ename (7566) :JONES
    Job (7566) :MANAGER
    Empno :7654
    Ename (7654) :MARTIN
    Job (7654) :SALESMAN
    Empno :7698
    Ename (7698) :BLAKE
    Job (7698) :MANAGER
    Empno :7782
    Ename (7782) :CLARK
    Job (7782) :MANAGER
    Empno :7788
    Ename (7788) :SCOTT
    Job (7788) :ANALYST
    Empno :7839
    Ename (7839) :KING
    Job (7839) :PRESIDENT
    Empno :7844
    Ename (7844) :TURNER
    Job (7844) :SALESMAN
    Empno :7876
    Ename (7876) :ADAMS
    Job (7876) :CLERK
    Empno :7900
    Ename (7900) :JAMES
    Job (7900) :CLERK
    Empno :7902
    Ename (7902) :FORD
    Job (7902) :ANALYST
    Empno :7934
    Ename (7934) :MILLER
    Job (7934) :CLERK
    42 rows selected.

  • How to convert into columns rows

    Hi all,
    How to convert columns into rows.
    thank you
    regards
    P Prakash

    Whats your DB Version. If its 11g and above you can check out PIVOT and UNPIVOT clause of SELECT statement. Its a new feature of 11g.
    For previous version just search this forum you will get lots of examples.

  • How to convert form Integer to Object

    How do I a convert from Integer to Object?

    ZIP codes are not integers because one does no
    arithmetic with them.Sure they do. Look at this zip code:
    90210-0001
    Looks like subtract 1 from 90210 to me. <joking/>Well US zip codes yes but Canadian zip codes are
    alpha numericbase 36 you mean.

  • Convert one record row into multiple rows

    Hi,
       I have small requirement.I have selected one data base record into an internal table.Now internal table has 1 record i.e 1 row(ex: 10 columns). Now i will convert this single row record into multiple  records i.e 10 rows( 10 columns wil; be converted into 10 rows). How i will convert this. Please give me any idea on this.
    Regards
    Geetha

    Hi Geetha,
    Search SCN using keyword,  " convert Rows into columns" or vice versa,,,
    U will get more answers & solutions,
    Look at Some of the Previous threads....
    Re: How to create a structure of itab as rows as colums and columns rows dy
    Re: Transpose rows and columns
    CONVERT ROWS INTO COLUMNS IN INTERNAL TABLE
    Convert Internal table Rows into columns of another internal table
    how to convert columns of an internal table to rows of another internal tab.
    Convert Columns into Rows (internal tables) - Urgent Help Pleasse..
    converting columns to rows
    Thanks & regards,
    Dileep .C

  • Is there any way to convert the selected rows to text in javascript??

    Hi All,
    I have place some word file to indesign cs 5.5 it is almost in one table, i need to separate the text from the real tables, Is there any way to convert the selected rows to text in javascript??
    If there is no way to make that, any one can help me to make a script to cut the selected rows and place it in privies pointer of the table to make it independent table and after that convert it to text ?

    This insert the rows contents after the table instead of being before:
    for (var r = app.selection.length - 1; r >= 0; r--) {
        for (var t = app.selection[r].rows.length - 1; t >= 0; t--) {
            for (var u = app.selection[r].rows[t].cells.length - 1; u >= 0; u--) {
                for (var c = app.selection[r].rows[t].cells[u].paragraphs.length - 1; c >= 0; c--) {
                    app.selection[r].rows[t].cells[u].paragraphs[0].move (LocationOptions.AFTER, app.selection[r].rows[t].parent.parent.storyOffset.parent.insertionPoints.nextItem(app.se lection[r].rows[t].parent.parent.storyOffset));
                    if (c != 0)
                        app.selection[r].rows[t].parent.parent.storyOffset.parent.insertionPoints.nextItem(app.se lection[r].rows[t].parent.parent.storyOffset).contents += "\r";
                if (u != 0) {
                    app.selection[r].rows[t].parent.parent.storyOffset.parent.insertionPoints.nextItem(app.se lection[r].rows[t].parent.parent.storyOffset).contents += "\t";
                else {
                    app.selection[r].rows[t].parent.parent.storyOffset.parent.insertionPoints.nextItem(app.se lection[r].rows[t].parent.parent.storyOffset).contents += "\r";
    for (var r = 0; r < app.selection.length; r++) {
        for (var t = app.selection[r].rows.length - 1; t >= 0; t--) {
            app.selection[r].rows[t].remove ();

  • UDO with Document Rows object : create lines with DIAPI

    Hi all,
    I'm created two tables : IFC_OBDC with Document object type and IFC_BDC1 with Document Rows object type.
    I'm created the associated UDO.
    How can i create data with DIAPI ??
    I'm begin to use SAPBobsCom.Documents but i don't find the SAPbobsCOM.BoObjectTypes for my UDO.
    The document is generate via program. So it is possible to create my UDO with DIAPI ??
    Thanks for your response.
    Michael

    Hi ,
    as i undtrestand you have a form with 2 tables one document and the other document lines.
    You want to populate the lines wuth DIAPI.
    i can give you this hints:
    create a document UDO with you tables.
    on form load activate the menus: add and remove line
    add the buttons OK and Cancel: with id 1 and 2
    Normally i think that it will work.
    Hope this helps.
    Best regards.

  • Converting Relational Tables to Object Views

    We have extra information stored for each
    field in a table. We call these Vertical
    Tables:
    rowid primary key - ties to normal tab
    column_name "" - ties to column in ""
    text_value the value if text
    reliability rating for level of accuracy...
    date of entry
    Yes there are normal tables that the applications also access if they just need the value of the columns.
    So I want to take this to object views. This way, while oracle is learning how to alter objects, we can still maintain our data and old application while converting to the use of objects.
    I thought the best solution would be Type(s) based on the orignal data type. A generic type, text65_t could be created to hold every column that is less than 65 characters long:
    CREATE TYPE text65_t AS OBJECT
    WITH OBJECT IDENTIFIER(row_id) AS
    row_id VARCHAR2(30),
    value VARCHAR2(65),
    reliability NUMBER(1,0),
    doe DATE
    A view can easily be created of this. The
    mapping is one to one.
    My problem is the next level. How can I build another view on top of text65_t, integer_t, date_t... that ties all of the
    vertical rows back into a normal relational table or object.
    Thanks,
    bill
    null

    Hi migration group,
    I realize this is kind of off topic for
    this discussion group. Where can I ask
    questions like this?
    thanks
    bill

  • How to Convert OBJECT_TYPE to the Object Type Used for DBMS_METADATA?

    How do you convert the object type in ALL_OBJECTS to the object type that DBMA_METADATA.GET_DDL expects?
    Thanks,
    Kurz

    maybe one needs to find a mapping between sys.metaview$ and all_objects:
    SQL> select type, xmltag, udt, viewname from sys.metaview$ where type like '%PACKAGE%'
    TYPE                      XMLTAG                    UDT                       VIEWNAME                
    DE_S_PACKAGE                                                                                          
    DE_S_COMP_PACKAGE                                                                                     
    DE_S_COMP_PACKAGE2                                                                                    
    DE_S_COMP_PACKAGE_SPEC                                                                                
    DE_S_PACKAGE_BODY1                                                                                    
    DE_S_PACKAGE_BODY                                                                                     
    SE_PACKAGE                                                                                            
    SE_COMP_PACKAGE                                                                                       
    SE_COMP_PACKAGE2                                                                                      
    SE_COMP_PACKAGE_SPEC                                                                                  
    SE_PACKAGE_BODY                                                                                       
    PACKAGE                   PACKAGE_T                 KU$_PROC_T                KU$_PKG_VIEW            
    PACKAGE                   PACKAGE_BODY_T            KU$_PROC_T                KU$_PKGBDY_VIEW         
    PACKAGE                   FULL_PACKAGE_T            KU$_FULL_PKG_T            KU$_FULL_PKG_VIEW       
    PACKAGE_SPEC              PACKAGE_T                 KU$_PROC_T                KU$_PKG_VIEW            
    PACKAGE_BODY              PACKAGE_BODY_T            KU$_EXP_PKG_BODY_T        KU$_EXP_PKG_BODY_VIEW   
    ALTER_PACKAGE_SPEC        ALTER_PACKAGE_SPEC_T      KU$_ALTER_PROC_T          KU$_ALTER_PKGSPC_VIEW   
    ALTER_PACKAGE_BODY        ALTER_PACKAGE_BODY_T      KU$_ALTER_PROC_T          KU$_ALTER_PKGBDY_VIEW   
    18 rows selected.

Maybe you are looking for