Execute pipelined function within other function .

Hi,
I'm on 9.2.0.8 , and got GUI application which can accept select only statements but I need kind of insert functionality.
So I've come up with clever idea and used pipelined functions with autonymous transaction to do inserts.
All looks like:
select * from table(opened_cursors_list)
select * from table(pgastat_list)
select * from table(sqlcosts_list)
all I need now is running this 3 function 1 after other in such way I can use select run_all_three() from dual;
or other way but called via select so my application gui can swallow it .
I've tried:
CREATE OR REPLACE Function gather_test_data
       RETURN number
    IS
        cnumber number := 1;
    BEGIN
     select * from table(opened_cursors_list);
     select * from table(pgastat_list);
     select * from table(sqlcosts_list);
    RETURN cnumber;
    EXCEPTION
    WHEN OTHERS THEN
          raise_application_error(-20001,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM);
    END;but got error 6/2 PLS-00428: an INTO clause is expected in this SELECT statement
So look like I need some fake I dont know how its called 'collection' to deal with that .
I know thats whole think is kind of workaround but its working with that gui application :).
Any ideas how to call that pipelined functions ?
Regards.
GregG

Well I did pipelined functions like that:
CREATE OR REPLACE function opened_cursors_list
return OPENED_CURSORS_table_type
pipelined
as
     PRAGMA AUTONOMOUS_TRANSACTION;
begin
     for l_rec in (select sysdate datetime, st.value , se.program, se.MODULE , se.username
                  from v$sesstat st, v$session se
                  where
                    st.statistic# = 3
                    and st.sid = se.sid
                    and value > 100
                    order by value desc
     LOOP
          PIPE ROW (OPENED_CURSORS_scalar_type(l_rec.datetime,
                                 l_rec.VALUE     ,
                            l_rec.PROGRAM   ,
                            l_rec.MODULE    ,
                            l_rec.USERNAME  ));
        insert into opened_cursors values(l_rec.datetime,
                               l_rec.VALUE     ,
                            l_rec.PROGRAM   ,
                            l_rec.MODULE    ,
                            l_rec.USERNAME);
    commit;
     END LOOP;
     RETURN;
END;
/And its working, but as You said I think I need some dummy record to select into it.
It doesn't really matters what kind of dummy record. Just to fullfil pl/sql requirements .
So how to define such dummy record to select into it from pipelined function ?
Regards.
Greg
Edited by: GregG on Apr 5, 2011 12:40 PM

Similar Messages

  • Call a functions within a function ?

    Hi
    Is there anyway to call my functions within a function ?
    function musicPlayer() {
         trace("Music");
         function pauseMusic(){
              trace("Pause");
    if i call musicPlayer function i will get Music in output now how can i call pauseMusic from outside of parent function !?
    is this possible ?
    thanks in advance

    You can call functions within other functions, but you don't want define functions inside other functions... they will only have scope within the function if they work at all.
    function pauseMusic(){
         trace("Pause");
    function musicPlayer() {
         trace("Music");
         pauseMusic();
    musicPlayer();

  • Can we call a function within a function??????Urgent

    Dear All,
    Like we can call a procedure from another procedure , in the same way can we call a function within a function. Please reply it's urgent.
    Regards

    > Please reply it's urgent.
    My usual soapbox response.
    Saying your posting is urgent is rude and arrogant. Why? Because you are saying that other people who have posted problems here, have less important problems than yours. That despite how complex and critical their problem may be, yours take priority.
    You're also demaning attention and a quick answer from people that provide support here - in their free time... and not getting paid a single cent for their efforts.
    So just how can you demand any urgency to your posting from them?
    Remember that this is a public forum. You cannot demand anything here. This is not Oracle Support. There are no SLA's here. Basic nettiquette applies.

  • Combing rounding functions with other functions

    I am using hyperion reports. Is it possible to combine a rounding function with another function? Specifically, I am taking a variance of actual vs budget where actual and budget are % of total functions. The variance I am getting is off (see ex. below.) I need to keep the actual and budget at 1 decimal point. To correct this problem in excel I am able to round the numbers pulled in by essbase. The ex. below illustrates my problem. Actual .2% Budget .2% Variance .1%

    You may want to make a 'Scenario' for rounding that is rounding the input data. If you make it (variance) 2pass, it will show the difference of the rounded numbers (ie. 0%)Rich [email protected]

  • Problem with calling a function within a function

    My problem is with the getWidth and getLength functions. The problem I am having is with the fact that when I get an incorrect input I pass it through the function again, which give me a weird return. The return I get is the correct input plus all the previous incorrect inputs after that. The one that gets returned is first incorrect input? I don't know if you understand, but I would appreciate help for this beginner.
    **Sorry about posting in this forum... I just realized this is not for beginners. Help would still be appreciated.**
    import java.util.Scanner;
    //Calculates the area of a rectangle
    public class AreaRectangle {
        private static Scanner c = new Scanner(System.in);
        private static boolean isNumber(String in) {
            boolean isNum = false;
            int count = 0;
            for (int i=0;i<in.length();i++) {
                if (in.charAt(i) >= '0' && in.charAt(i) <= '9' || in.charAt(i) == '.') {
                    if (in.charAt(i) == '.') {count++;}
                    else if (count > 1){isNum=false;break;}
                    else {isNum = true;}
                else {
                    isNum=false;
                    break;
            return isNum;
        public static double getLength() {
            String input;
            boolean isNum;
            double length = 0;
            System.out.print("Please enter the rectangle's length: ");
            input = c.nextLine();
            isNum = isNumber(input);
            if (isNum) {
                length = Double.parseDouble(input);
            else {
                System.out.println("Incorrect input!");
                getLength();
            System.out.println(input);
            return length;
        public static double getWidth() {
            String input;
            boolean isNum;
            double width = 0;
            System.out.print("Please enter the rectangle's width: ");
            input = c.nextLine();
            isNum = isNumber(input);
            if (isNum) {
                width = Double.parseDouble(input);
            else {
                System.out.println("Incorrect input!");
                getWidth();
            System.out.println(input);
            return width;
        public static double getArea(double length, double width) {
            return width*length;
        public static void displayData(double length, double width, double area) {
            System.out.println("Width = "+width+" "+"Length = "+length+" "+"Area = "+area);
        public static void main(String[] args) {
            double l, w, a;
            l = getLength();
            w = getWidth();
            a = getArea(l, w);
            displayData(l, w, a);
    }Edited by: x713 on Apr 12, 2008 7:12 PM
    Edited by: x713 on Apr 12, 2008 7:19 PM

    You're calling things recursively and that's not good (at least not here).
    To clarify, please look:
        public static double getLength() {
            if (something) {
                do something else
            else {
                System.out.println("Incorrect input!");
                getLength();  // you call the entire method again here! This is the recursive call
        }Better is to have a while loop inside the method and repeat this loop until the input that the user enters is correct (or until they quits).

  • Analytical View - Substring function and Other functions.

    Hello All
    I am trying to use substring and trim function for a value/string and get the field value from position 6 - 10. in analytical view.
    Example: Field name XYZ (Values showing as: ASDFG GETVALUENW  2345) --> (data type :22 VARCHAR)
    Output must be : GETVALUENW (which is 10 characters, from position 6 after trimming) which I am wring to new filed in Calculated coloumns.
    Trying the use built-in functions but syntax wise missing some thing need your inputs.
    Regards
    Kiran.

    Hi Kiran Avunuri,
    A small thought process.
    Have you tried something similar(syntax) in your view.
    BR
    Prabhith

  • Declaring functions in other functions and callbacks

    Hi - I'm curious to know if the following situation is
    possible (I haven't gotten it to work yet).
    I'd like to load a series of images, and in the callback,
    place them in different positions in my array. Instead of writing a
    separate callback for each image, I'd like to do something like the
    following:
    But it looks like each version of the function gets the end
    version of "i", not the version of i that existed when the function
    was declared.
    Is something like this at all possible?

    Right. The whole point of the question is if is possible to
    dynamically declare functions for use as callbacks.
    For example, in the standard loading functions, you register
    a callback like this:
    var load:Loader = new Loader();
    var req:URLRequest = new URLRequest(swf);
    load.contentLoaderInfo.addEventListener(Event.COMPLETE,
    swfloadcallback);
    load.load(req);
    function swfloadcallback(e:Event):void
    The problem with the standard callback function is that I
    can't add additional arguments to it. For example, I couldn't have
    swfloadcallback take in an additional argument (for example the
    index of the swf I'm trying to load). What I'm wondering is if in
    actionscript 3 it's possible to dynamically declare callbacks such
    that I only have to write the code once, but in essence I am adding
    additional parameters to the callback.
    Hence the example I listed above. What I was trying to
    accomplish there was basically dynamically creating callbacks that
    understood which index to insert the loaded image into. But clearly
    that example doesn't work.

  • How to use multiple xmlforest() function within xmlagg() function

    I need to create following XML structure by reading multiple tables from DB .
    The tables are relational and joined by keys.
    <Invoice>
    <CaseOrdrId>0000022359</CaseOrdrId>
    <Id>100065117</Id>
    <Prescription>
    <CaseOrdrItmId>0000005684</CaseOrdrItmId>
    <RxId>1104900686</RxId>
    <Prescriber>
         <CasePartyIdDEA>0000000000</CasePartyIdDEA>
         <CasePartyIdNPI>0000000000</CasePartyIdNPI>
         <CasePartyIdSLic>0000000000</CasePartyIdSLic>
         </Prescriber>
         <PatInfo>
              <CasePartyId>0000000000</CasePartyId>
              </PatInfo>
    </Prescription>
    </Invoice>
    <Invoice>
    <Invoice>
    <Invoice>
    <Invoice>
    <Invoice> tag can repeat 5times , So,I am using xmlagg().
    To create the tree structure within <Invoice> I am using multiple xmlforest().
    But getting error : SQL Error: ORA-06553: PLS-306: wrong number or types of arguments in call to 'SYS_IXMLAGG' . code added today marked in yellow.
    Any help on this would be really helpful.

    Hi , I could fix the previous issue with xmlagg().
    My query is as follows :
    select
    xmlelement( "Response", xmlforest( b.StatusCode as "StatusCode", b.StatusMessage as "StatusMessage",
    b.ServiceAction as "ServiceAction",
    select
    xmlforest( a.id as "Id", a.ExternalId as "ExternalId", a.Source as "Source", a.UserID as "UserID", xmlforest(b.id as
    "Id")"Note", xmlforest(
    select
    Xmlforest(P.Case_Party_Id As "CasePartyId",Xmlelement("CaseGeoAddrId",S.Address_Id )as "Address"
    from
    v44139.party p,
    v44139.patient_address s
    where
    p.case_party_id = s.case_party_id
    and p.party_id_type_cde = 'MBR'
    AND s.individual_agn_id = 0
    ) as "Membership")"Group",
    select
    xmlagg(xmlelement("Invoice",xmlelement( "CaseOrdrId",d.case_order_id),
    xmlelement("Id" ,d.invoice_nbr) ,xmlelement("Prescription",
    xmlforest(e.case_order_item_id as "CaseOrdrItmId", e.rx_nbr as "RxId"),
    xmlelement("Prescriber",
    xmlforest(169629 as "CasePartyIdDEA", 169630 as "CasePartyIdNPI",169631
    as "CasePartyIdSLic")),xmlelement("PatInfo",xmlforest(e.case_party_id as "CasePartyId") )) ) )
    --AS ID
    from
    v44139.patient_order d ,
    v44139.order_rx e
    where
    d.case_id = a.id
    and d.case_order_id = e.case_order_id
    as "Invoice"
    from
    select
    '142' as id,
    'CMRT' as source,
    'V44042' as userid,
    'EMG-7788' as externalid ,
    361 as case_party_id
    from
    dual
    a
    "Case") ) as "XML_QUERY"
    from
    select
    200 as statuscode,
    'SUCCESS' as statusmessage,
    '0000000000' as id,
    'Update' serviceaction
    from
    dual
    b;
    ===============================================================================================
    The result is as follows :
    <Response><StatusCode>200</StatusCode><StatusMessage>SUCCESS</StatusMessage><ServiceAction>Update</ServiceAction><Case><Id>142</Id><ExternalId>EMG-7788</ExternalId><Source>CMRT</Source><UserID>V44042</UserID><Note><Id>0000000000</Id></Note><Group><Membership><CasePartyId>382</CasePartyId><Address><CaseGeoAddrId>144</CaseGeoAddrId></Address></Membership></Group_*><Invoice><Invoice><*_CaseOrdrId>202</CaseOrdrId><Id>999999993                                         </Id><Prescription><CaseOrdrItmId>105</CaseOrdrItmId><RxId>1118800008</RxId><Prescriber><CasePartyIdDEA>169629</CasePartyIdDEA><CasePartyIdNPI>169630</CasePartyIdNPI><CasePartyIdSLic>169631</CasePartyIdSLic></Prescriber><PatInfo><CasePartyId>382               </CasePartyId></PatInfo></Prescription></Invoice><Invoice><CaseOrdrId>203</CaseOrdrId><Id>825478795                                         </Id><Prescription><CaseOrdrItmId>106</CaseOrdrItmId><RxId>1118800005</RxId><Prescriber><CasePartyIdDEA>169629</CasePartyIdDEA><CasePartyIdNPI>169630</CasePartyIdNPI><CasePartyIdSLic>169631</CasePartyIdSLic></Prescriber><PatInfo><CasePartyId>382               </CasePartyId></PatInfo></Prescription></Invoice><Invoice><CaseOrdrId>204</CaseOrdrId><Id>999999992                                         </Id><Prescription><CaseOrdrItmId>107</CaseOrdrItmId><RxId>1118800007</RxId><Prescriber><CasePartyIdDEA>169629</CasePartyIdDEA><CasePartyIdNPI>169630</CasePartyIdNPI><CasePartyIdSLic>169631</CasePartyIdSLic></Prescriber><PatInfo><CasePartyId>382               </CasePartyId></PatInfo></Prescription></Invoice><Invoice><CaseOrdrId>205</CaseOrdrId><Id>999999991                                         </Id><Prescription><CaseOrdrItmId>108</CaseOrdrItmId><RxId>1118800006</RxId><Prescriber><CasePartyIdDEA>169629</CasePartyIdDEA><CasePartyIdNPI>169630</CasePartyIdNPI><CasePartyIdSLic>169631</CasePartyIdSLic></Prescriber><PatInfo><CasePartyId>382               </CasePartyId></PatInfo></Prescription></Invoice></Invoice></Case></Response>
    The ISSUE : <Invoice> tag repeating twice in 3 rd line . How to correct this ?

  • Function to function referencing in Function Library

    If you have many functions within your function library, is there a way to reference another as to not have redundant code? Or is each function within the library completely separate?
    Yes, I know i can simply copy the code out of a specific function and add it into another functions code, but I am hoping for an option that allows for easier, one location, maintenance.
    Thanks in advance

    Hi Daniel,
    To achieve You want, you need to define each function as static. Then You can cal the function of this way:
    import mypackage.myFunctionclass;
    public class mycomplexFunctionClass{
    private void complexfunction(){
    int a = myFunctionclass.function1();
    /*It is not necessary to instance the class, only add the correct reference taking account the correct 
    and complete class name(it includes the package)*/
    Regards
    Ivan

  • No data Found when executing select within a function

    Hi
    I have a select statement based on the USER_ROLE_PRIVS view for a specific granted_role and user, If I execute the statement in SQL/Plus I obtain the required result, however if I put the same select in a function and excute the function signed on as the same user I get ora-00100 no data found. I have granted execute to public on the function. Is there a grant I have missed
    Any Help would be Great
    Tina

    1 CREATE OR REPLACE FUNCTION xyz
    2 Return number IS
      3  v_return number := 0;
      4  v_granted_role user_role_privs.granted_role%type;
      5  BEGIN
      6  Select granted_role
      7  into v_granted_role
      8  from USER_ROLE_PRIVS
      9  where Granted_Role = 'CONNECT'
    10  and username = user;
    11  v_return := 1;
    12  RETURN v_return;
    13  EXCEPTION
    14  when no_data_found then
    15  v_return := 0;
    16  RETURN v_return;
    17  when others then
    18  v_return:= 9;
    19  RETURN v_return;
    20* END;
    SQL> /
    Function created.
    SQL>  declare
      2   n number;
      3   begin
      4   n:=xyz;
      5   dbms_output.put_line('n'||n);
      6   end;
      7   /
    PL/SQL procedure successfully completed.
    SQL> set serveroutput on;
    SQL> /
    n1
    PL/SQL procedure successfully completed.Your supplied code works fine for me - Executing in owner schema. Then only authid current_user is missing in your code
    Edited by: Lokanath Giri on १९ अगस्त, २०१० ६:०२ अपराह्न

  • Queries on pl/sql tables within a function

    hi,
    how can i execute regular sql-queries within a function on a pl/sql table which the function has recieved as a parameter ? i have tried quite a bit and always get type mismatches or internal errors. anybody has a good example on this ?
    thanks in advance,
    stephan

    hi,
    okay, i will not post the actual code i have, because it won't make too much sense out of the context, but here are the relevant parts...
    i have a few object definitions that represent the records of the three tables (two input and one output)...
    create type t1 as object (...);
    create type t2 as object (...);
    create type t3 as object (...);
    and a package with the table definitions
    create or replace package t_defs as
    type tab_t1 is table of t1;
    type tab_t2 is table of t2;
    type tab_t3 is table of t3;
    end t_defs;
    and here is a rough sketch what the function should look like later:
    CREATE OR REPLACE FUNCTION some_function (
    tab1 IN t_defs.tab_t1, tab2 IN t_def.tab_t2)
    RETURN t_defs.tab_t3 PIPELINED IS
    TYPE refcur IS REF CURSOR;
    cur0 refcur;
    curr_rec t3 := t3(NULL, ....);
    BEGIN
    open cur0 for 'here is the statement i could not do';
    LOOP
    FETCH cur0 INTO curr_rec.....;
    EXIT WHEN cur0%NOTFOUND;
    . -- (manipulate the record) --
    PIPE ROW(curr_rec);
    END LOOP;
    RETURN;
    END;

  • Function within package error

    Hi friends,
    I have a package called xxhw_ams_utils with a function in it get_salary
    When i tried to execute that function within the package like the below manner means, im getting error like
    ORA-00904: "XXHW_AMS_UTILS"."GET_SALARY": invalid identifier
    select apps.xxhw_ams_utils.get_salary(1072) from dualwhere 1072 is the assignment id that im passing for testing purpose.
    This is the actually the get_salary function which is inside the package xxhw_ams_utils coding
    FUNCTION get_salary
    (p_asg_id IN NUMBER)
        RETURN VARCHAR2 IS
    l_gross VARCHAR2(20);
    l_basic VARCHAR2(20);
    BEGIN
    select eev.screen_entry_value
    into l_basic
           from   pay_element_entry_values_f eev,
                  per_pay_bases              ppb,
                  pay_element_entries_f       pe
           where  ppb.pay_basis_id  +0 = 61
           and    pe.assignment_id     = 1072
           and    eev.input_value_id   = ppb.input_value_id
           and    eev.element_entry_id = pe.element_entry_id
           and    sysdate between
                            eev.effective_start_date and eev.effective_end_date
           and    sysdate between
                            pe.effective_start_date and pe.effective_end_date;
    EXCEPTION
    WHEN OTHERS THEN RAISE;
    END; Suppose if i executed like the below manner means, i getting the correct result
    select eev.screen_entry_value
    --into l_basic
           from   pay_element_entry_values_f eev,
                  per_pay_bases              ppb,
                  pay_element_entries_f       pe
           where  ppb.pay_basis_id  +0 = 61
           and    pe.assignment_id     = 1072------------------------------------>assignment id (that im passing)
           and    eev.input_value_id   = ppb.input_value_id
           and    eev.element_entry_id = pe.element_entry_id
           and    sysdate between
                            eev.effective_start_date and eev.effective_end_date
           and    sysdate between
                            pe.effective_start_date and pe.effective_end_date;Suppose if i execute like the below means it is returning error like invalid character.
    select apps.xxhw_ams_utils.get_salary(1072) from dualWhy might be the problem friends.
    Brgds,
    Mini

    Hi Giri,
    Thanks yes i didnt mentioned that function get_salary in the package specification and now the package is compiled successfully,
    But when i tried to execute i get the error like
    ORA-06503: PL/SQL: Function returned without value
    ORA-06512: at "APPS.XXHW_AMS_UTILS", line 177when i execute like
    select apps.xxhw_ams_utils.get_salary(1072) from dualBrgds,
    Mini

  • How to define function within for loop pls help?????

    Hi this is the problem i have a class, and within that class there is an actionPerformed function, in this class i also create an instance of another class, this other class also contains an actionPerformed function, which wis executed if a jButton has been pressed, when I try to place this actionPerfromed function within a for loop of a function i get an error saying illegal start of experssion, and that the class should be defined abstract as it does not define actionPerformed, when i take it out of the for loop it compliles fine, i need the function to be placed within the for loop because it needs to know the variable of the for loop, is there anyway around this? Thanks, below is the code:
    public class DisplayTransitions extends JFrame implements ActionListener
    public void add()
    for(int i = 0; i < char2.size(); i ++)
    mPanel.add(tim[i] = new JButton("Time"));
    tim.addActionListener(this);
    public void actionPerformed(ActionEvent ae)
         if (ae.getSource() == tim[i])
              timeIncr();

    This is your for loop using an anonymous inner class for the listener:
                for (int i = 0; i < char2.size(); i++) {
                    mPanel.add(tim[i] = new JButton("Time"));
                    tim.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent ae) {
    if (ae.getSource() == tim[i]) {
    timeIncr();
    Learn more about anonymous inner classes from a good Java book or the Java tutorial (try http://java.sun.com/docs/books/tutorial/java/javaOO/QandE/nested-answers.html).

  • How to get result of HTTPService within a function?

    Hello all,
    I'm trying to call an HTTPService's send() and get the
    resulting data from within a function, and assigning it locally.
    Specifically, this is what I want:
    private function getData():void {
    myRPC.send();
    //How do I set the result of myRPC.send to a variable here?
    // Neither myRPC.send().result, nor myRPC.lastResult works! I
    get null both times!
    // But if I set myRPC.result to a separate function that
    handles an event, I get the correct data...but not what I want.
    var myObject:Object = ???? myRPC.???
    <mx:HTTPService result="???" fault="???" id="myRPC"
    method="GET" resultFormat="e4x" url="someurl" useProxy="false">
    <mx:request xmlns="">
    <somedata>hi</somedata>
    </mx:request>
    </mx:HTTPService>
    I am also not sure what to put in 'result' and 'fault' since
    I don't want the result/fault to be passed to another
    function...could anyone explain this please? Thanks!

    "Hamshmam" <[email protected]> wrote in
    message
    news:g70olu$jcd$[email protected]..
    > Hi Greg,
    >
    > While this is not what I am looking for, thanks for your
    response.
    >
    > I am familiar with traditional HTTPService requests and
    passing the
    > resulting
    > event to a function handle directly and then modifying
    the object from
    > there.
    > However, as I described in my earlier post, I'm looking
    for a way to get
    > the
    > resulting event of the HTTPService.send() within a
    different function.
    >
    > I am doing this because if I have another function
    dependent on the
    > HTTPService.send()'s data, I cannot simply call the
    HTTPService.send()
    > from
    > within that function and update a class private var with
    the data, which I
    > access from the wrapping function. This is because the
    HTTPService is by
    > nature
    > asynchronous, so it is possible that the class private
    var will remain
    > null
    > while further lines of code are executed, all the while
    the HTTPService is
    > interacting with the server concurrently.
    >
    > I hope it is clear now why I need to assign the result
    of a HTTPService
    > result
    > directly within a function, if you or anyone else could
    shed some light on
    > that, I would appreciate it! Thanks for your response.
    http://www.johnwilger.com/2007/03/future-value-pattern-in-actionscript-3.html

  • How do I view a FUNCTION within a Package Body

    I can see the FUNCTION being executed within the Package...
    FUNCTION Stop_Refresh_AsBilled
    RETURN Number;
    And within Oracle SQL Developer and using the Connection and "Packages" part of the Schema, I see the Function Name. However, when I <Double-Click> on the FUNCTION Name within the Schema, it is taking me to where the FUNCTION is executed within the Package and NOT to the PL/SQL Code that actually makes up the FUNCTION.
    Am I missing something here??? Maybe in my Preferences??? How can I drill down further to actually find the FUNCTION Definition and PL/SQL Code that makes up the FUNCTION within the Package Body???
    I can bring up the Package Body and Search on the FUNCTION that way. I'm hoping there is an easier way however to drill down to the actual PL/SQL Code that makes up the FUNCTION.
    I hope I am being clear in my explanation here.
    Thanks for your review and I am hopeful for a reply.
    PSULionRP

    Jim, opening the body node to see all functions and procedures sometimes does not work in 3.0
    I have many packages generated by Feuerstien's CodeGen utility. The Query package appears just fine with every function and procedure appearing as expected in both header and body nodes. However, the Change Package fails miserably. Header shows all functions and procedures fine, but the body node only shows the top private declarations of variables and types. Not one function or procedure appears in the expanded node.
    The only thing I can figure is that the Change package of about 30 named items has many of the same name+ with overloaded parameters. I think SQL Dev is having problems parsing the names in the body even though it does fine with the names in the header of the package--perhaps because of many private variables and PRAGMA's declared at the top of the body.
    Both packages have about 30 functions, but the Change package body has over 2000 lines while the Query package has fewer than 500.
    Just adding to the mystery--but I think it merits a bug report (gotta figure out where to report it now).

Maybe you are looking for