Pipelined function which creates xml nodes,items and elements

Hi Everyone,
I am Vikas Kumar and i have written a pipelined function
which is returning a UDT which i have created in my database.
but when i am piping a row then there is error :
"Error: PLS-00306: wrong number or types of arguments in call to 'CLASEC_MENU_TYPE' "
i have created UDT as :
create type clasec_menu_type as object (menu_data xmltype);
create type clasec_menu_list_type as table of clasec_menu_type;
and function is as below
create or replace function clasec_fns_menu
return clasec_menu_list_type pipelined as
doc xmldom.DOMDocument;
main_node xmldom.DOMNode;
root_node xmldom.DOMNode;
user_node xmldom.DOMNode;
item_node xmldom.DOMNode;
root_elmt xmldom.DOMElement;
item_elmt xmldom.DOMElement;
item_text xmldom.DOMText;
CURSOR get_menu IS
SELECT menu_level,
is_menu_a_leaf,
menu_id,
menu_name,
menu_screen_uri,
screen_target_frame,
rownum
FROM clasec_menu_view1;
BEGIN
doc := xmldom.newDOMDocument;
main_node := xmldom.makeNode(doc);
root_elmt := xmldom.createElement(
doc,
'Menubar'
root_node := xmldom.appendChild(
main_node,
xmldom.makeNode(root_elmt)
pipe row (clasec_menu_type(root_node));
FOR get_menu_rec IN get_menu LOOP
if get_menu_rec.menu_level = 1 then
item_elmt := xmldom.createElement(
doc,
'menu'
xmldom.setAttribute(
item_elmt,
'text',
get_menu_rec.menu_name
user_node := xmldom.appendChild(
root_node,
xmldom.makeNode(item_elmt)
pipe row(user_node);
end loop;
end;
compilation error is at the statement
pipe row (clasec_menu_type(root_node));
i think its conversion error but don,t know how can i convert root_node which has been defined with :
root_node xmldom.DOMNode;
Regards,
Vikas Kumar

Hi,
Your type, clasec_menu_type, needs an argument of type XMLType. If you want to create instance of XMLType, you have to pass it varchar2, clob or XMLType.
So, think how will you convert xmldom.DOMNode to XMLtype or Varchar2 or clob.
Best of luck

Similar Messages

  • How to create xml nodes based on a value

    Dear friends,
    I've a question about graphical mapping in SAP PI...
    How can I create XML nodes on the target side based on a value in a XML field on the source side.
    For example:
    This XML field on the source:
    <NO_OF_LINES>4</NO_OF_LINES>
    Must result on 4 Lines on the Target:
    <LINE></LINES>
    <LINE></LINES>
    <LINE></LINES>
    <LINE></LINES>
    So it's actually the opposite of the Count function...
    I appreciate your help,
    Thank you in Advance,
    Kind regards,
    John

    Hi ,
    Try this
    NO_OF_LINES---> count---> UDF---> LINE
    example :
    UDF Code :
    for (int i=0;i<var1[0];i++)
    result.addValue("");

  • How to get UTF-8 encoding when create XML using DBMS_XMLGEN and UTL_FILE ?

    How to get UTF-8 encoding when create XML using DBMS_XMLGEN and UTL_FILE ?
    Hi,
    I do generate XML-Files by using DBMS_XMLGEN with output by UTL_FILE
    but it seems, the xml-Datafile I get on end is not really UTF-8 encoding
    ( f.ex. cannot verifying it correct in xmlspy )
    my dbms is
    NLS_CHARACTERSET          = WE8MSWIN1252
    NLS_NCHAR_CHARACTERSET     = AL16UTF16
    NLS_RDBMS_VERSION     = 10.2.0.1.0
    I do generate it in this matter :
    declare
    xmldoc CLOB;
    ctx number ;
    utl_file.file_type;
    begin
    -- generate fom xml-view :
    ctx := DBMS_XMLGEN.newContext('select xml from xml_View');
    DBMS_XMLGEN.setRowSetTag(ctx, null);
    DBMS_XMLGEN.setRowTag(ctx, null );
    DBMS_XMLGEN.SETCONVERTSPECIALCHARS(ctx,TRUE);
    -- create xml-file:
    xmldoc := DBMS_XMLGEN.getXML(ctx);
    -- put data to host-file:
    vblob_len := DBMS_LOB.getlength(xmldoc);
    DBMS_LOB.READ (xmldoc, vblob_len, 1, vBuffer);
    bHandle := utl_file.fopen(vPATH,vFileName,'W',32767);
    UTL_FILE.put_line(bHandle, vbuffer, FALSE);
    UTL_FILE.fclose(bHandle);
    end ;
    maybe while work UTL_FILE there is a change the encoding ?
    How can this solved ?
    Thank you
    Norbert
    Edited by: astramare on Feb 11, 2009 12:39 PM with database charsets

    Marco,
    I tryed to work with dbms_xslprocessor.clob2file,
    that works good,
    but what is in this matter with encoding UTF-8 ?
    in my understandig, the xmltyp created should be UTF8 (16),
    but when open the xml-file in xmlSpy as UTF-8,
    it is not well ( german caracter like Ä, Ö .. ):
    my dbms is
    NLS_CHARACTERSET = WE8MSWIN1252
    NLS_NCHAR_CHARACTERSET = AL16UTF16
    NLS_RDBMS_VERSION = 10.2.0.1.0
    -- test:
    create table nh_test ( s0 number, s1 varchar2(20) ) ;
    insert into nh_test (select 1,'hallo' from dual );
    insert into nh_test (select 2,'straße' from dual );
    insert into nh_test (select 3,'mäckie' from dual );
    insert into nh_test (select 4,'euro_€' from dual );
    commit;
    select * from nh_test ;
    S0     S1
    1     hallo
    1     hallo
    2     straße
    3     mäckie
    4     euro_€
    declare
    rc sys_refcursor;
    begin
    open rc FOR SELECT * FROM ( SELECT s0,s1 from nh_test );
    dbms_xslprocessor.clob2file( xmltype( rc ).getclobval( ) , 'XML_EXPORT_DIR','my_xml_file.xml');
    end;
    ( its the same when using output with DBMS_XMLDOM.WRITETOFILE )
    open in xmlSpy is:
    <?xml version="1.0"?>
    <ROWSET>
    <ROW>
    <S0>1</S0>
    <S1>hallo</S1>
    </ROW>
    <ROW>
    <S0>2</S0>
    <S1>straޥ</S1>
    </ROW>
    <ROW>
    <S0>3</S0>
    <S1>m㢫ie</S1>
    </ROW>
    <ROW>
    <S0>4</S0>
    <S1>euro_€</S1>
    </ROW>
    </ROWSET>
    regards
    Norbert

  • Using a newly created Library document to create a list item and attach itself

    I have a workflow that moves a document from one library to another.
    When a document is moved to a certain library I want to create a list item with a link to the document in the list item.  Keep in mind there could be 10 files submitted to the library, so then in my list I would want 10 new list items created for
    each file, with a link to the individual file. or is there a way to attach the document to a newly created list item programmatically?
    is this possible?

    Hi,
    According to your post, my understanding is that you wanted to use a newly created Library document to create a list item and attach itself.
    I recommend to create a workflow assocaited to the second library, and start the workflow automatically when an item is created.
    Then add action as below:
    Best Regards,
    Linda Li
    Linda Li
    TechNet Community Support

  • What is the functional difference between the /Shared Items and the /Users/Shared folders?

    Can someone shed some light on the difference, intended functionality between the /Shared Items and the /Users/Shared folders?

    do any/all network services use the Shared Items folder?
    Not all services use it. Time Machine Server does, and I'm not sure which others. FTP is not controlled by Server.app.

  • Is it possible to dynamically create xml nodes?

    Hi,
    Is it possible to dynamically create child nodes of an xml
    file with flash??
    Im what i want to do is save a users name etc in an xml file
    without having to manually add nodes in.
    So when a user clicks a button to save their details a new
    node is created.
    Thnx

    Yes.
    Look
    at XML.appendChild as a starting point.

  • Programatically create new mail item and open - body text lost on subsequent saves

    Hi,
    I have a problem with trying to create new GroupWise mail item from a
    button in a C3PO. I require programmatic access to this via the Object
    API, so it must be a saved draft. This is relativley straight forward to
    do - just create a mail item using the object API, and then use the Token
    API to open this item.
    This worked fine in 6.5.0, however in 6.5.1 and 6.5.2 I have noticed that
    when the user does a subsequent save, the body text of the message
    dissappears in the GUI (it is updated correctly in the draft however) -
    and all subsequent saves cause the body text to dissappear. If you close
    the mail item and open the draft manually you can continue as normal.
    As a test, I also tried to use the Token API to create a new mail item,
    and then again to save the item in the work in progress folder. This
    seems to work fine the very first time you do this, but each subsequent
    time the same behaviour is seen - i.e. the body text of the email is
    deleted from the GUI. Also, another observation here, event though the
    mail item was saved in the WIP folder via the token API command
    ItemSaveMessageDraft, it moves into the users MailBox when the user saves
    it manually.
    I have posted the two snippets of code from my test C3PO project at then
    end.
    This is a major problem, as we need to be able to reliably create new mail
    items from a toolbar button, so any help very much appreciated.
    Regards
    Greg
    Test case 1: Create a new message object in the WIP folder, and then open
    it using Token API...
    Dim sRetString As String
    Dim DraftMail As Object
    Set DraftMail =
    g_C3POManager.ClientState.CurrentAccount.WorkFolde r.Messages.Add
    ("GW.MESSAGE.MAIL", egwDraft)
    g_Commander.Execute "ItemOpen(""" & DraftMail.MessageId & """)", sRetString
    Test case 2: Create a new mail via token API, then use token API to save
    the item in the WIP folder...
    Dim sRetString As String
    ' create the new mail item...
    g_Commander.Execute "NewMail()", sRetString
    ' Get the folder path as a string..
    Dim GWFolder As Object
    Dim sAccount As String
    Dim sFolderPath As String
    sAccount = g_C3POManager.ClientState.CurrentAccount.RootFolde r.Name
    Set GWFolder = g_C3POManager.ClientState.CurrentAccount.WorkFolde r
    sFolderPath = sAccount & "\" & GWFolder.Name
    ' dirty the message so save works...
    g_Commander.Execute "ItemSetText(""X00"";Subject!;"" "")", sRetString
    g_Commander.Execute "ItemSetText(""X00"";Subject!;"""")", sRetString
    ' do the save...
    g_Commander.Execute "ItemSaveMessageDraft(""" & sFolderPath & """)",
    sRetString

    Hi,
    I have a problem with trying to create new GroupWise mail item from a
    button in a C3PO. I require programmatic access to this via the Object
    API, so it must be a saved draft. This is relativley straight forward to
    do - just create a mail item using the object API, and then use the Token
    API to open this item.
    This worked fine in 6.5.0, however in 6.5.1 and 6.5.2 I have noticed that
    when the user does a subsequent save, the body text of the message
    dissappears in the GUI (it is updated correctly in the draft however) -
    and all subsequent saves cause the body text to dissappear. If you close
    the mail item and open the draft manually you can continue as normal.
    As a test, I also tried to use the Token API to create a new mail item,
    and then again to save the item in the work in progress folder. This
    seems to work fine the very first time you do this, but each subsequent
    time the same behaviour is seen - i.e. the body text of the email is
    deleted from the GUI. Also, another observation here, event though the
    mail item was saved in the WIP folder via the token API command
    ItemSaveMessageDraft, it moves into the users MailBox when the user saves
    it manually.
    I have posted the two snippets of code from my test C3PO project at then
    end.
    This is a major problem, as we need to be able to reliably create new mail
    items from a toolbar button, so any help very much appreciated.
    Regards
    Greg
    Test case 1: Create a new message object in the WIP folder, and then open
    it using Token API...
    Dim sRetString As String
    Dim DraftMail As Object
    Set DraftMail =
    g_C3POManager.ClientState.CurrentAccount.WorkFolde r.Messages.Add
    ("GW.MESSAGE.MAIL", egwDraft)
    g_Commander.Execute "ItemOpen(""" & DraftMail.MessageId & """)", sRetString
    Test case 2: Create a new mail via token API, then use token API to save
    the item in the WIP folder...
    Dim sRetString As String
    ' create the new mail item...
    g_Commander.Execute "NewMail()", sRetString
    ' Get the folder path as a string..
    Dim GWFolder As Object
    Dim sAccount As String
    Dim sFolderPath As String
    sAccount = g_C3POManager.ClientState.CurrentAccount.RootFolde r.Name
    Set GWFolder = g_C3POManager.ClientState.CurrentAccount.WorkFolde r
    sFolderPath = sAccount & "\" & GWFolder.Name
    ' dirty the message so save works...
    g_Commander.Execute "ItemSetText(""X00"";Subject!;"" "")", sRetString
    g_Commander.Execute "ItemSetText(""X00"";Subject!;"""")", sRetString
    ' do the save...
    g_Commander.Execute "ItemSaveMessageDraft(""" & sFolderPath & """)",
    sRetString

  • Create a Maintenance Item and Plan

    Hi guys,
    Does anybody know if there is some BAPI or FM's do create Maintenance Plans and Items?
    I found MAINTENANCE_PLAN_POST and MAINTENANCE_ITEM_POST, but i think these FM's just a insert records in database...
    Does anybody knows how to fill the input tables or other way to do this?
    Thanks in advance.
    LMS

    BDC?
    Rob

  • How to create XML data source/ and load data from a web service to BI

    All,
    I m trying to find a 'how to' document (or any document) that shows how to create an XML data source to load data directly from a web service or from an XML file.
    I appreciate any help.

    Hi Mike,
    Two more for you:----
    /thread/111488 [original link is broken]
    http://help.sap.com/saphelp_nw70/helpdata/en/e6/1dd53bb90cbb1ae10000000a11402f/content.htm
    Regards,
    Suman

  • 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

  • List View Report with pipelined function in Mobile application and ORA-01007: variable not in select list

    Hi!
    I have a problem with List View Report in mobile application (theme 50 in apex) after updating to apex 4.2.2. I created Report -> List View. I used select from pipelined function in Region Source. Then when page is running and submited three times (or refreshed three times) I get an error:
    Error during rendering of region "LIST VIEW".
    ORA-01007: variable not in select list
    Technical Info (only visible for developers)
    is_internal_error: true
    apex_error_code: APEX.REGION.UNHANDLED_ERROR
    ora_sqlcode: -1007
    ora_sqlerrm: ORA-01007: variable not in select list
    component.type: APEX_APPLICATION_PAGE_REGIONS
    component.id: 21230833903737364557
    component.name: LIST VIEW
    error_backtrace:
         ORA-06512: at "APEX_040200.WWV_FLOW_DISP_PAGE_PLUGS", line 4613
         ORA-06512: at "APEX_040200.WWV_FLOW_DISP_PAGE_PLUGS", line 3220
    I get this error only when I use select from pipelined function in Region Source (for example: "select value1, value2 from table(some_pipelined_function(param1, param2)) ").
    You can check it on http://apex.oracle.com/pls/apex/f?p=50591 (login - demo, password - demo).
    In this application:
    - I created package TAB_TYPES_PKG:
    create or replace PACKAGE TAB_TYPES_PKG IS
    TYPE cur_rest_r IS RECORD (
        STR_NAME          VARCHAR2(128),
        INFO              VARCHAR2(128)
    TYPE cur_rest_t IS TABLE OF cur_rest_r;
    END TAB_TYPES_PKG;
    - I created pipelined function TEST_FUNC:
    create or replace
    FUNCTION TEST_FUNC
    RETURN TAB_TYPES_PKG.cur_rest_t  PIPELINED IS
    r_cur_rest TAB_TYPES_PKG.cur_rest_r;
    BEGIN
    r_cur_rest.STR_NAME := 'ROW 1';
    r_cur_rest.INFO := '10';
    PIPE ROW (r_cur_rest);
    r_cur_rest.STR_NAME := 'ROW 2';
    r_cur_rest.INFO := '20';
    PIPE ROW (r_cur_rest);
    r_cur_rest.STR_NAME := 'ROW 3';
    r_cur_rest.INFO := '30';
    PIPE ROW (r_cur_rest);
    r_cur_rest.STR_NAME := 'ROW 4';
    r_cur_rest.INFO := '40';
    PIPE ROW (r_cur_rest);
    r_cur_rest.STR_NAME := 'ROW 5';
    r_cur_rest.INFO := '50';
    PIPE ROW (r_cur_rest);
    RETURN;
    END TEST_FUNC;
    - I created List View Report on Page 1:
    Region Source:
    SELECT str_name,
           info
    FROM TABLE (TEST_FUNC)
    We can see error ORA-01007 after refresing (or submiting) Page 1 three times or more.
    How to fix it?

    Hi all
    I'm experiencing the same issue.  Predictably on every third refresh I receive:
    Error
    Error during rendering of region "Results".
    ORA-01007: variable not in select list
    Technical Info (only visible for developers)
    is_internal_error: true
    apex_error_code: APEX.REGION.UNHANDLED_ERROR
    ora_sqlcode: -1007
    ora_sqlerrm: ORA-01007: variable not in select list
    component.type: APEX_APPLICATION_PAGE_REGIONS
    component.id: 6910805644140264
    component.name: Results
    error_backtrace: ORA-06512: at "APEX_040200.WWV_FLOW_DISP_PAGE_PLUGS", line 4613 ORA-06512: at "APEX_040200.WWV_FLOW_DISP_PAGE_PLUGS", line 3220
    OK
    I am running Application Express 4.2.2.00.11 on GlassFish 4 using Apex Listener 2.0.3.221.10.13.
    Please note: this works perfectly using a classic report in my desktop application; however, no joy on the mobile side with a list view.  I will use a classic report in the interim.
    My region source is as follows:
    SELECT description AS "DESCRIPTION", reference AS "REFERENCE" FROM TABLE(AUTOCOMPLETE_LIST_VIEW_FNC('RESULTS'))
    The procedure:
      FUNCTION AUTOCOMPLETE_LIST_VIEW_FNC(
          p_collection_name IN VARCHAR2)
        RETURN list_row_table_type
      AS
        v_tab list_row_table_type := list_row_table_type();
      BEGIN
        DECLARE
          jsonarray json_list;
          jsonobj json;
          json_clob CLOB;
        BEGIN
          SELECT clob001
          INTO json_clob
          FROM apex_collections
          WHERE collection_name = p_collection_name;
          jsonobj              := json(json_clob);
          jsonarray            := json_ext.get_json_list(jsonobj, 'predictions');
          FOR i IN 1..jsonArray.count
          LOOP
            jsonobj := json(jsonArray.get(i));
            v_tab.extend;
            v_tab(v_tab.LAST) := list_row_type(json_ext.get_string(jsonobj, 'description'), json_ext.get_string(jsonobj, 'reference'));
          END LOOP;
          RETURN(v_tab);
        END;  
      END AUTOCOMPLETE_LIST_VIEW_FNC;
    Thanks!
    Tim

  • Create xml file with nested internla table or with header & item tables

    Hi I have a requirement like, I need to create an xml file for header and item details. For 1 header there may be multiple line items.
    I did search in forums some where I came to know that we can use XSL:IF to achieve this. but I could not able to do this.
    I tried with using nested internal tables also but now luck.
    can anybody please suggest how can we create xml for header and item detials.
    <xsl:transform version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:sap="http://www.sap.com/sapxsl"
      xmlns:asx="http://www.sap.com/abapxml"
      exclude-result-prefixes="asx"
    >
    <xsl:template match="/">
      <OrbisomRequest>
        <xsl:attribute name="Version">
          <xsl:value-of select="11.1"/>
        </xsl:attribute>
        <xsl:attribute name="IssuerID">
          <xsl:value-of select="1"/>
        </xsl:attribute>
        <xsl:for-each select="asx:abap[1]/asx:values[1]/T_FINAL[1]/*">
    <CreateApprovedPurchaseRequest
           RerquestID="{VBLNR}"
           CommonName="User1"
           Amount="{WRBTR}"
           Comment="TestComment"
           CurrencyCode="978"
           PurchaseType="All"
           SupplierName="All"
           VCardAlias="PurchaseCard"
           ValidFrom="1M"
           CurrencyType="B">
                    <CDFs>
                      <Invoice> <xsl:value-of select="BELNR"/> </Invoice>
                      <Amount> <xsl:value-of select="WRBTR"/> </Amount>
                    </CDFs>
          </CreateApprovedPurchaseRequest>
        </xsl:for-each>
      </OrbisomRequest>
    </xsl:template>
    </xsl:transform>
    here belnr and wrbtr will be my item details. for each payment document I can have multiple invoices. in CDF I need to display the invoices for that particular payment document.
    what conditions can I put there before CDFs to make the item internal table to loop based on header internal table.
    Regards,
    Ranganadh.

    Looks like you have already created the transformation "Z_ID"
    Take a look at the following thread, it answers many of the questions you have asked:
    [ABAP data to XML conv with UTF-8 encoding and custom namespace|Re: ABAP data to XML conv with UTF-8 encoding and custom namespace;
    Che

  • BAPI to add item and its net price while creating opportunity

    is there any BAPI/FM  through which  i can add item and its net value to opportunity in CRM.
    Kindly help.
    Regards
    Sachin Yadav

    You can give a try with Customer Function like EXIT_SAPLMCB1_001

  • Pipelined function

    Hi Everyone,
    I am Vikas Kumar and i have written a pipelined function
    which is returning a UDT which i have created in my database.
    but when i am piping a row then there is error :
    "Error: PLS-00306: wrong number or types of arguments in call to 'CLASEC_MENU_TYPE' "
    i have created UDT as :
    create type clasec_menu_type as object (menu_data xmltype);
    create type clasec_menu_list_type as table of clasec_menu_type;
    and function is as below
    create or replace function clasec_fns_menu
    return clasec_menu_list_type pipelined as
    doc xmldom.DOMDocument;
    main_node xmldom.DOMNode;
    root_node xmldom.DOMNode;
    user_node xmldom.DOMNode;
    item_node xmldom.DOMNode;
    root_elmt xmldom.DOMElement;
    item_elmt xmldom.DOMElement;
    item_text xmldom.DOMText;
    CURSOR get_menu IS
    SELECT menu_level,
    is_menu_a_leaf,
    menu_id,
    menu_name,
    menu_screen_uri,
         screen_target_frame,
    rownum
    FROM clasec_menu_view1;
    BEGIN
    doc := xmldom.newDOMDocument;
    main_node := xmldom.makeNode(doc);
    root_elmt := xmldom.createElement(
    doc,
    'Menubar'
    root_node := xmldom.appendChild(
    main_node,
    xmldom.makeNode(root_elmt)
    pipe row (clasec_menu_type(root_node));
    FOR get_menu_rec IN get_menu LOOP
    if get_menu_rec.menu_level = 1 then
         item_elmt := xmldom.createElement(
              doc,
         'menu'
         xmldom.setAttribute(
              item_elmt,
         'text',
         get_menu_rec.menu_name
         user_node := xmldom.appendChild(
              root_node,
         xmldom.makeNode(item_elmt)
    pipe row(user_node);
    end loop;
    end;
    compilation error is at the statement
    pipe row (clasec_menu_type(root_node));
    i think its conversion error but don,t know how can i convert root_node which has been defined with :
    root_node xmldom.DOMNode;
    Regards,
    Vikas Kumar

    Use a package to declare a type with xmldom.domnode.
    create package xml
    as
    type xml_node_tab is table of xmldom.domnode;
    end;
    create or replace function clasec_fns_menu
    return xml.xml_node_tab pipelined as
    doc xmldom.DOMDocument;
    main_node xmldom.DOMNode;
    root_node xmldom.DOMNode;
    user_node xmldom.DOMNode;
    item_node xmldom.DOMNode;
    root_elmt xmldom.DOMElement;
    item_elmt xmldom.DOMElement;
    item_text xmldom.DOMText;
    CURSOR get_menu IS
    SELECT menu_level,
    is_menu_a_leaf,
    menu_id,
    menu_name,
    menu_screen_uri,
    screen_target_frame,
    rownum
    FROM clasec_menu_view1;
    BEGIN
    doc := xmldom.newDOMDocument;
    main_node := xmldom.makeNode(doc);
    root_elmt := xmldom.createElement(
    doc,
    'Menubar'
    root_node := xmldom.appendChild(
    main_node,
    xmldom.makeNode(root_elmt)
    pipe row (root_node);
    FOR get_menu_rec IN get_menu LOOP
    if get_menu_rec.menu_level = 1 then
    item_elmt := xmldom.createElement(
    doc,
    'menu'
    xmldom.setAttribute(
    item_elmt,
    'text',
    get_menu_rec.menu_name
    user_node := xmldom.appendChild(
    root_node,
    xmldom.makeNode(item_elmt)
    pipe row(user_node);
    end if;
    end loop;
    end;
    setting "end if" to the right place

  • Pipelined function issue

    I have a function which populates a collection, pipe the elements in the collection and throws the piped table object. Its working fine.
    But when I pass the collection to this function instead of populating them in the function. Its throwing a error message stating that unable to access rows from nested table.
    How to overcome this.
    Thanks in advance

    That's strange. When I tried your code on my system I didn't get the error. Here's what I did. Note that some object definitions were not provided so I had to replace some of your code with my own. Also, there was a typo in the definition of tabFun you provided, two "END;" lines were listed where only one was needed.
    SQL> CREATE OR REPLACE TYPE myObj AS OBJECT
      2  ( F1 INT,
      3    F2 DATE,
      4    F3 VARCHAR2(25)
      5  );
      6  /
    Type created.
    SQL> show errors
    No errors.
    SQL>
    SQL>
    SQL> CREATE OR REPLACE TYPE myTab AS TABLE OF myObj;
      2  /
    Type created.
    SQL> show errors
    No errors.
    SQL>
    SQL>
    SQL> CREATE OR REPLACE FUNCTION tabFun(tab1 IN myTab)
      2    RETURN myTab PIPELINED
      3  IS
      4  BEGIN
      5    FOR i in 1 .. tab1.count
      6    LOOP
      7      PIPE ROW (myObj(tab1(i).F1,tab1(i).F2,tab1(i).F3));
      8    END LOOP;
      9    RETURN;
    10  END;
    11  /
    Function created.
    SQL> show errors
    No errors.
    SQL>
    SQL>
    SQL>
    SQL> CREATE OR REPLACE PROCEDURE myProc
      2  --(ref_cur out weakcur.cur_defn)
      3    ( ref_cur out sys_refcursor )
      4  AS
      5    tab myTab;
      6  BEGIN
      7
      8  select myobj( 1, sysdate, 'test' )
      9  bulk collect into tab
    10  from dual
    11  ;
    12
    13  /*
    14  SELECT myObj(case_id, creation_date, bo_id_cust)
    15  bulk collect into tab
    16  from ps_rc_case
    17  where rownum < 10;
    18  */
    19
    20  dbms_output.put_line(tab.count); --- While debugging its shows the value as 10
    21
    22  open ref_cur for select * from table(tabFun(tab));
    23  --- Here I am getting the error "Unable to read rows from non nested table"
    24
    25  END;
    26  /
    Procedure created.
    SQL> show errors
    No errors.
    SQL>
    SQL> set serveroutput on
    SQL>
    SQL> variable v_ref_cursor refcursor
    SQL>
    SQL> execute myproc( :v_ref_cursor );
    1
    PL/SQL procedure successfully completed.
    SQL>
    SQL> print v_ref_cursor
            F1 F2        F3
             1 29-APR-06 testTry running the test case from a clean user. Perhaps some objects aren't really defined the way you expect them to be in the user you're currently testing under.

Maybe you are looking for

  • How to add a drill down feature in the Adobe form output

    Hi, I am new to adobe forms.I have a requirement where in i need to develop a form which will have diffeerent rows in the output. if the user is accessing the form using SAP GUI i need to provide a hyperlink on the row which will have a drill down fe

  • Please help me: what is the wrong in my code?

    Hi all , I wrote a script in unix to send a mail, i am executing the script using java code, when i test the script separately in unix it is working properly , when i am executing it in java it is not working properly it is not showing any errors. UN

  • Just comparing one string how to get the node?

    hi group, I get the string value like this: String listselvalue = getJList1().getSelectedValue().toString(); Just i am comparing this with particular node.(which is in tree) like this: TreePath path = getmy_tree().getPathForRow(1); DefaultMutableTree

  • Contact list

    Does anyone have a problem with dialing a number from you contact list. I have a number saved in my contact list and when i go in there to select dial it does not ring but automatically disconnects me. Everyone other number works but just the particu

  • Firefox 4.0 won't start. Says it is not supported on this architecture. I have Mac os X

    Firefox 4.0 won't start. Says it is not supported on this architecture. I have Mac os X