Getting an error - group function not allowed here

Below is the merge statement...
getting an error - group function not allowed here
WHY????
merge into summary
using
(select
a.user_id,
min(a.start_time_utc),
max(a.end_time_utc),
sum(a.duration_seconds),
/*total_upload
total_download
total_traffic,*/
max(r.package_id),
last_usage_charge, -------hard coded
max(r.peak_rate),
max(r.bst_plantype),
max(r.free_value), ---for free value
a.IsPeak,
sum(a.TotalDiscount)
from aaa_sessions a,rate_plan r,subscriber_info si
where
si.EXTERNAL_ID=a.USER_ID
and
si.PACKAGE_ID=r.PACKAGE_ID
group by
user_id,bst_plantype,ispeak)t ------do we need to use alias here
on
(summary.user_id=t.user_id
and
summary.type_of_summary=t.bst_plantype
and
summary.ispeak=t.ispeak)
When matched then
update
set
start_date =decode((t.start_time_utc-summary.start_date)-abs(t.start_time_utc-summary.start_date),0,summary.start_date,t.start_time_utc),
end_date=decode((t.end_time_utc-summary.end_date)-abs(t.end_time_utc-summary.end_date),0,t.end_time_utc,s.end_date),
total_duration=summary.total_duration+sum(duration_seconds),
total_upload=summary.total_upload+sum(upload_bytes),
total_download=summary.total_download+sum(download_bytes),
total_traffic=summary.total_upload+sum(upload_bytes)+summary.total_download+sum(download_bytes)
When not matched then
INSERT
(user_id ,
start_date,
end_date,
total_duration,
/*total_upload
total_download
total_traffic,*/
rate_plan_id,
last_usage_charge,
peak_rate,
type_of_summary,
IsPeak,
TotalDiscount)
VALUES
(t.user_id,
t.start_time_utc,
t.end_time_utc,
t.duration_seconds,
/*t.output_bytes,
t.input_bytes,
t.output_bytes+aa.input_bytes,*/
t.PACKAGE_ID,
1, ---hard coded the value
t.PEAK_RATE,
t.BST_PLANTYPE,
t.ispeak,
t.free_value);

This is the query,...
Its giving no complilation errors..
I have not used aggregate functions in the insert/update..
have used only decode...
and nowhere i found that aggegate functions not allowed in the insert/update stmts of merge..
Can u please post a link where it is mentioned...
MERGE INTO summary
USING (SELECT a.user_id, MIN (a.start_time_utc) stc,
MAX (a.end_time_utc) etc, SUM (a.duration_seconds) ds,
SUM (a.download_bytes) download,
SUM (a.upload_bytes) upload, MAX (r.package_id) pkg_id,
MAX (r.peak_rate) p_rate, MAX (r.offpeak_rate)
ofp_rate,
MAX (r.bst_plantype) plan_type,
SUM (r.free_value) free_val, a.ispeak,
MAX (r.peak_pulse) p_pulse,
MAX (r.offpeak_pulse) ofp_pulse
FROM aaa_sessions a, rate_plan r, subscriber_info si
WHERE si.external_id = a.user_id
AND si.package_id = r.package_id
GROUP BY user_id, bst_plantype, ispeak) t
ON ( summary.user_id = t.user_id
AND summary.type_of_summary = t.plan_type
AND summary.rate_plan_id = t.pkg_id
AND summary.ispeak = t.ispeak)
WHEN MATCHED THEN
UPDATE
SET start_date =
DECODE ( (t.stc - summary.start_date)
- ABS (t.stc - summary.start_date),
0, summary.start_date,
t.stc
end_date =
DECODE ( (t.etc - summary.end_date)
- ABS (t.etc - summary.end_date),
0, t.etc,
summary.end_date
total_duration = summary.total_duration + t.ds,
total_download = summary.total_download + t.download,
total_upload = summary.total_upload + t.upload,
total_traffic =
summary.total_upload
+ t.upload
+ summary.total_download
+ t.download,
last_usage_charge =
DECODE (t.plan_type,
0, (t.ds - t.free_val)
/ DECODE (t.ispeak, 0, t.ofp_pulse, p_pulse)
* DECODE (t.ispeak, 0, t.ofp_rate, t.p_rate),
((t.download + t.upload) - t.free_val
* DECODE (t.ispeak, 0, t.ofp_rate, t.p_rate)
WHEN NOT MATCHED THEN
INSERT (user_id, start_date, end_date, total_duration,
total_download, total_upload, total_traffic, rate_plan_id,
last_usage_charge, peak_rate, type_of_summary, ispeak,
totaldiscount)
VALUES (t.user_id, t.stc, t.etc, t.ds, t.download, t.upload,
t.download + t.upload, t.pkg_id,
DECODE (t.plan_type,
0, (t.ds - t.free_val)
/ DECODE (t.ispeak, 0, t.ofp_pulse, p_pulse)
* DECODE (t.ispeak, 0, t.ofp_rate, t.p_rate),
((t.download + t.upload) - t.free_val
* DECODE (t.ispeak, 0, t.ofp_rate, t.p_rate)
t.p_rate, t.plan_type, t.ispeak, t.free_val);
COMMIT;

Similar Messages

  • GETTING AN ERROR -GROUP FUNCTIO NOT ALLOWED  HERE

    SELECT user_id, packageid,
    DECODE (bstplantype,
    0, ( CEIL ( SUM (duration_seconds) ------GROUP FUNCTION OT ALLOWED HERE
    / ( DECODE (ispeak,
    0, offpeakpulse,
    peakpulse
    * convert_duration (ratingunit, pulseunit)
    * DECODE (ispeak, 0, offpeakpulse, peakpulse)
    * convert_duration (ratingunit, pulseunit)
    - (freevalue * convert_duration (ratingunit, pulseunit)),
    CEIL ( (SUM (upload_bytes) + SUM (download_bytes))
    / ( DECODE (ispeak, 0, offpeakpulse, peakpulse)
    * convert_bytes (ratingunit, pulseunit)
    * DECODE (ispeak, 0, offpeakpulse, peakpulse)
    * convert_bytes (ratingunit, pulseunit)
    - (freevalue * convert_bytes(ratingunit, pulseunit)))
    FROM aaa_interim a, subscriber_rate_tab srt
    WHERE a.user_id = srt.externalid
    AND a.isday=srt.FREEVALUETYPE
    AND DECODE (bstplantype,
    0, ( CEIL ( SUM (duration_seconds)
    / ( DECODE (ispeak,
    0, offpeakpulse,
    peakpulse
    * convert_duration (ratingunit, pulseunit)
    * DECODE (ispeak, 0, offpeakpulse, peakpulse)
    * convert_duration (ratingunit, pulseunit)
    - (freevalue * convert_duration (ratingunit, pulseunit)),
    CEIL ( (SUM (upload_bytes) + SUM (download_bytes))
    / ( DECODE (ispeak, 0, offpeakpulse, peakpulse)
    * convert_duration (ratingunit, pulseunit)
    * DECODE (ispeak, 0, offpeakpulse, peakpulse)
    * convert_duration (ratingunit, pulseunit)
    - (freevalue * convert_duration (ratingunit, pulseunit))) >
    0.8 * MIN (NVL (srt.creditthreshold, 0))
    GROUP BY user_id,
    packageid,
    bstplantype,
    ispeak,
    peakpulse,
    offpeakpulse,
    ratingunit,
    pulseunit,
    freevalue,
    vendor_Session_id ------to sum up all the stop records belonging to the same user_id and session(stitching and all)

    Hi
    Can't really be bothered checking this properly given what you have posted as a question but, at first glance, I think you actually mean something like this...
    SELECT   user_id,
             packageid,
             DECODE(bstplantype,
                    0,
                    (CEIL(SUM(duration_seconds) ------GROUP FUNCTION OT ALLOWED HERE
                          / (DECODE(ispeak, 0, offpeakpulse, peakpulse)
                             * convert_duration(ratingunit, pulseunit)))
                     * DECODE(ispeak, 0, offpeakpulse, peakpulse)
                     * convert_duration(ratingunit, pulseunit))
                    - (freevalue * convert_duration(ratingunit, pulseunit)),
                    CEIL((SUM(upload_bytes) + SUM(download_bytes))
                         / (DECODE(ispeak, 0, offpeakpulse, peakpulse)
                            * convert_bytes(ratingunit, pulseunit)))
                    * DECODE(ispeak, 0, offpeakpulse, peakpulse)
                    * convert_bytes(ratingunit, pulseunit)
                    - (freevalue * convert_bytes(ratingunit, pulseunit)))
    FROM     aaa_interim a, subscriber_rate_tab srt
    WHERE    a.user_id = srt.externalid AND a.isday = srt.freevaluetype
    GROUP BY user_id,
             packageid,
             bstplantype,
             ispeak,
             peakpulse,
             offpeakpulse,
             ratingunit,
             pulseunit,
             freevalue,
             vendor_session_id
    HAVING   DECODE(bstplantype,
                    0,
                    (CEIL(SUM(duration_seconds)
                          / (DECODE(ispeak, 0, offpeakpulse, peakpulse)
                             * convert_duration(ratingunit, pulseunit)))
                     * DECODE(ispeak, 0, offpeakpulse, peakpulse)
                     * convert_duration(ratingunit, pulseunit))
                    - (freevalue * convert_duration(ratingunit, pulseunit)),
                    CEIL((SUM(upload_bytes) + SUM(download_bytes))
                         / (DECODE(ispeak, 0, offpeakpulse, peakpulse)
                            * convert_bytes(ratingunit, pulseunit)))
                    * DECODE(ispeak, 0, offpeakpulse, peakpulse)
                    * convert_bytes(ratingunit, pulseunit)
                    - (freevalue * convert_bytes(ratingunit, pulseunit))) >
                (0.8 * MIN(NVL(srt.creditthreshold, 0)))Not a great query though. I would look into the CASE statement and subquery factoring (the WITH clause) to make this readable and remove repetition.
    Cheers
    Ben

  • Epub validation error: element "ol" not allowed here; expected element "li"

    How do i fix this?
    and why is the InDesign exporting incorrect html for it's fixed layout epubs? Is this a new issue with the recent update?

    Which version of InDesign are you using?
    Validation errors have been reduced with the latest update of ID CC 2014.2 last week.

  • When trying to transfer an e-book I get an error message "Copy not allowed.  You are not allowed to copy this book.

    I am trying to copy a book from digital editions to my nook and am told "You do not have permission to copy this book".  Yet all I want to do is move a copy to read it.

    The publisher of the book seems to have restricted copying of the book on to other devices. Contact the book distributor.

  • Getting the error column not allowed here in jdbc

    i have got an error
    when using jdbc.
    i have inserted the data from taking java textfields.
    The error is:column not allowed here.
    how to rectify this?
    iam eagerly waiting for ur reply.

    Hi,
    This is the forum for the SQL Developer Data Modeler product.
    I suggest you try asking your question on the SQL and PL/SQL Forum: PL/SQL
    David

  • Seq # not allowed here

    while executing the below query. I m getting this error ora error 02287 " sequence # not allowed here"
            SELECT SVC_ORD_DETAIL_ID.NEXTVAL,
                   K.SVC_ORDER_ID,
                   'RELEASED_DATE',
                   K.RELEASEDT
            FROM (SELECT S.SVC_ORDER_ID,
                         TO_DATE(T.RELSD_DT||T.RELSD_TM,'yyyymmddhh24miss') AS RELEASEDT
                         FROM IONS09MAR12.SVC_ORDER S,
                         M09_NT_UV_IMPLEMENT_PLAN T
                   WHERE S.ORDER_NUMBER(+) = T.PLAN_ID) K;

    As I predicted then.
    Below is extract from Oracle Documentation:-
    Restrictions on Sequence Values You cannot use CURRVAL and NEXTVAL in the
    following constructs:
    A subquery in a DELETE, SELECT, or UPDATE statement
    A query of a view or of a materialized view
    A SELECT statement with the DISTINCT operator
    A SELECT statement with a GROUP BY clause or ORDER BY clause
    A SELECT statement that is combined with another SELECT statement with the
    UNION, INTERSECT, or MINUS set operator
    The WHERE clause of a SELECT statement
    The DEFAULT value of a column in a CREATE TABLE or ALTER TABLE statement
    The condition of a CHECK constraint
    _Within a single SQL statement that uses CURRVAL or NEXTVAL, all referenced LONG_
    _columns, updated tables, and locked tables must be located on the same database._

  • ORA-01733- virtual column not allowed here  - Insert using inline view

    Does anyone know why I am getting ORA-01733- virtual column not allowed here
    SQL> select * from v$version;
    BANNER
    Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
    PL/SQL Release 11.1.0.6.0 - Production
    CORE 11.1.0.6.0 Production
    TNS for 32-bit Windows: Version 11.1.0.6.0 - Production
    NLSRTL Version 11.1.0.6.0 - Production
    ---no error without WITH CHECK option
    SQL> INSERT INTO
    2 (SELECT
    3 location_id,
    4 city,
    5 l.country_id
    6 FROM countries c, locations l,regions r
    7 where l.country_id = c.country_id
    8 and r.region_id=c.region_id
    9 and r.region_name = 'Asia')
    10 VALUES (5500, 'Wansdworth Common', 'UK');
    1 row created.
    SQL> rollback;
    Rollback complete.
    -----error with WITH CHECK OPTION
    SQL> INSERT INTO
    2 (SELECT
    3 location_id,
    4 city,
    5 l.country_id
    6 FROM countries c, locations l,regions r
    7 where l.country_id = c.country_id
    8 and r.region_id=c.region_id
    9 and r.region_name = 'Asia' WITH CHECK OPTION)
    10 VALUES (5500, 'Wansdworth Common', 'UK');
    INSERT INTO
    ERROR at line 1:
    ORA-01733: virtual column not allowed here
    I was expecting
    ORA-01402: view WITH CHECK OPTION where-clause violation
    for the second one. Is there anything I am missing here ?

    Randolf
    Thank you very much for the update to this old question
    After reading the link I think I should ignore this error and accept it as ORA-01402
    The information you asked me to check did not lead me an understanding of different error types.
    SQL> ----view for ORA-01733
    SQL> create view test_v_1
      2  as
      3  SELECT
      4  location_id,
      5  city,
      6  l.country_id
      7  FROM countries c, locations l,regions r
      8  where l.country_id = c.country_id
      9  and r.region_id=c.region_id
    10  and r.region_name = 'Asia' WITH CHECK OPTION;
    View created.
    SQL>
    SQL>
    SQL>
    SQL> select * from user_updatable_columns where table_name='TEST_V_1';
    OWNER                          TABLE_NAME                     COLUMN_NAME                    UPD INS DEL
    HR                             TEST_V_1                       CITY                           YES YES YES
    HR                             TEST_V_1                       COUNTRY_ID                     NO  NO  NO
    HR                             TEST_V_1                       LOCATION_ID                    YES YES YES
    SQL>
    SQL> ----view for ORA-01402
    SQL>
    SQL> create view test_v_2
      2  as
      3  SELECT
      4  d.department_id,
      5  d.department_name,
      6  d.location_id
      7  FROM hr.departments d,hr.locations l
      8  WHERE l.location_id=d.location_id
      9  and d.location_id < 2000
    10  WITH CHECK OPTION;
    View created.
    SQL>
    SQL> select * from user_updatable_columns where table_name='TEST_V_2';
    OWNER                          TABLE_NAME                     COLUMN_NAME                    UPD INS DEL
    HR                             TEST_V_2                       DEPARTMENT_ID                  YES YES YES
    HR                             TEST_V_2                       DEPARTMENT_NAME                YES YES YES
    HR                             TEST_V_2                       LOCATION_ID                    NO  NO  NO
    SQL>
    SQL>
    SQL> ----INSERT STILL FAILING WITH DIFFERENT ERROR DESPITE THE SAME UPDATABLE COLUMN STRUCTURE
    SQL> insert into test_v_1 values  (5500, 'Wansdworth Common', 'UK');
    insert into test_v_1 values  (5500, 'Wansdworth Common', 'UK')
    ERROR at line 1:
    ORA-01733: virtual column not allowed here
    SQL> insert into test_v_2 values  (9999, 'Entertainment', 2500);
    insert into test_v_2 values  (9999, 'Entertainment', 2500)
    ERROR at line 1:
    ORA-01402: view WITH CHECK OPTION where-clause violation
    SQL>A. Coskan GUNDOGAR
    Oracle DBA
    http://coskan.wordpress.com
    “A man's errors are his portals of discovery.”
    James Joyce

  • Database Connection: Http Error 405 Method Not Allowed

    Hi,
    I am new to this forum, but I am having an issue I hope you can help with.  I have a database on my MS SQL Server 2008.  I am trying to access it with my DW8 page, and while I can code a connection successfully, I can't use the Database or Bindings Tab in DW.  I can successfully get the database to show if I "Build..." the connection (Test Connection works.)  However, if I click ok, the database shows up in my tab, but under Tables... (none)!  Also, if I hit Test button on the OLE Db Connection window, I get Http Error 405 Method Not Allowed.  If I use the SQL Server Connection Option, I get the same result.
    I have scoured Google for an answer.  There are a lot of links to questions, but no answers.  There was apparently an answer on adobe.com, but the link is broken: http://www.macromedia.com/support/dreamweaver/ts/documents/err405.htm.   Any suggestions would be greatly appreciated.
    Have a great Day!
    RobF

    Thank you SnakEyez02.
    I had the Testing Server set to Local/Network but didn't have MySQL installed locally.  Changed that setting to FTP and it picked up on the database correctly.
    When using MSSQL it doesn't matter whether you choose Local/Network or FTP it just picks up the online database regardless.  I guess this must just be a difference between it and MySQL.
    Thanks for the advice.  Much appreciated.
    NJ

  • Error 405 Method Not Allowed

    I am using Dreamweaver 8 (Studio 8) and made some PHP pages
    finally got connected to the database and everything was working
    fine for two weeks. Then out of the blue a few days ago all of a
    sudden I can not connect to the database through Dreamweaver. I can
    connect using SQLyog but not Dreamweaver just keep getting an
    "Error 405 Method not Allowed"
    Any Ideas???

    found my own fix finally
    http://www.dreamweavermxsupport.com/index.php?type=article&id=85&block=1&pid=60&sid=61

  • How to solve error - default position not allowed

    Dear friends,
    While hiring a new person i am getting the error "default positon not allowed" in infotype 0001.
    PLOGI-PRELI switch for default positon is maintained. Kindly help.

    Dear Neeta,
    As per your scenerio,it maybe that the position once used can not be used again or default position has been restricted to
    assign kindly check the same with ABAP and also be informed that these kind of restriction are being made to get the proper cost
    centre attachment for the position/employee that helps in correct posting of documents while posting payroll.
    hopes it will help for you.
    rgds,
    Priyanka

  • ORA-00934: group function is not allowed here

    Hi,
    My requirement is to check oi.quantity is equal to sum of packing_detail. quantity
    by order_number
    select oi.quantity_ordered oi_qu, pd.quantity pq
    from ordered_items oi, packing_details pd
    where oi.ordered_item_id = pd.ordered_item_id
    and oi.quantity_ordered = sum(pd.quantity)
    and oi.order_number = '29';
    after executing above query I get error
    SQL Error: ORA-00934: group function is not allowed here
    00934. 00000 - "group function is not allowed here"
    Please tell me how to resolve it.
    Thanks in advance
    Sandy

    You have to make use of a subquery;
    select oi.quantity_ordered oi_qu, pd.quantity pq
    from ordered_items oi, packing_details pd 
    where oi.ordered_item_id = pd.ordered_item_id 
    and oi.quantity_ordered = *(select sum(pd.quantity) from packing_details pd1 group by pd1.ordered_item_id)* 
    and oi.order_number = '29';  This is based on the assumption that ordered_items is the summarize data and packing_details are the line item level data.
    regards,
    Dipankar.

  • PL/SQL equivalent of T-SQL - "group function is not allowed here"

    Hi all, hope someone can give me a hand as I'm pretty stuck! I have been trying to convert some MS SQL Server T-SQL statements into Oracle PL/SQL and am stuck on the below one:
    SELECT
    CA.AssessmentID,
    (SELECT ProductName + ISNULL(' - ' + PrincipalBenefit,'')
    FROM rptPolicySnapshot WHERE PolicyID = MAX(CA.PolicyID)
    AND SnapshotID = 1),
    MAX(CA.PolicyID)
    FROM rptClaimInvoiceLineSnapshot CIL
    INNER JOIN rptClaimAssessmentSnapshot CA
    ON CIL.AssessmentID = CA.AssessmentID
    AND CIL.SnapshotID = CA.SnapshotID
    WHERE CIL.SnapshotID = 1
    GROUP BY CA.AssessmentID
    This works fine in MSSQL but returns the below error in Oracle:
    'ORA-00934: group function is not allowed here'
    If I take out the subquery the query works fine.
    Any ideas as to the syntax? I am new to Oracle so not sure as to how I should go about writing this.
    Thanks in advance!
    Leo

    WITH x AS (SELECT   ca.assessmentid,
                        MAX (ca.policyid) policy_id
               FROM rptclaiminvoicelinesnapshot cil
                    INNER JOIN rptclaimassessmentsnapshot ca
                        ON cil.assessmentid = ca.assessmentid
                       AND cil.snapshotid = ca.snapshotid
               WHERE cil.snapshotid = 1
               GROUP BY ca.assessmentid
    SELECT x.assessment_id,
           x.policy_id,
           productname + decode(principalbenefit,null,null,' - ' || principalbenefit ) prodname
    FROM   rptpolicysnapshot, x
    WHERE  policyid = x.policy_id
    AND    snapshotid = 1I think that's in the neighbourhood.

  • PL/SQL: ORA-00934: group function is not allowed here

    Hi,
    I am writing a PL/SQL procedure. The structure is like :
    SET SERVEROUTPUT ON;
    CREATE OR REPLACE Procedure abc
    IS
    v_total_ip_rec number(14);
    v_total_op_rec number(14);
    v_total_rec number(14);
    BEGIN
    SELECT SUM (CASE
    WHEN <condition 1>
    THEN 1
    ELSE 0
    END
    ) into v_total_ip_rec,
    SUM (CASE
    WHEN <condition 2>
    THEN 1
    ELSE 0
    END
    ) into v_total_op_rec,
    SUM (1) into v_total_rec
    FROM A,B
    WHERE A.Col1=B.Col1;
    EXCEPTION
    WHEN OTHERS THEN
    raise_application_error(-20001,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM);
    END;
    When I run this procedure it gives me following error:
    "PL/SQL: ORA-00934: group function is not allowed here"
    Anybody have any idea?
    Any help would be appreciated.
    Thanks.

    Hi Arunkumar ,
    I think you don't need subquery.
    Regards Salim.
    Or.
    SELECT COUNT (CASE
                     WHEN <condition 1>
                        THEN 1
                  END) v_total_ip_rec,
           COUNT (CASE
                     WHEN <condition 2>
                        THEN 1
                  END) v_total_op_rec,
           COUNT (1) v_total_rec
      FROM a, b
    WHERE a.col1 = b.col1

  • ERROR ITMS-9000: "index_split_000.html(257): attribute "name" not allowed here; expected attribute "accesskey", "charset", "class", "coords", "dir", "href", "hreflang", "id", "rel", "rev", "shape", "style", "tabindex", "target", "title", "type" or "xml:la

    I have all these errors, can anyone help with this all means? trying to get my book published in iBooks. Nedd your help. Thanks, Jo
    ERROR ITMS-9000: "index_split_000.html(257): attribute "name" not allowed here; expected attribute "accesskey", "charset", "class", "coords", "dir", "href", "hreflang", "id", "rel", "rev", "shape", "style", "tabindex", "target", "title", "type" or "xml:lang"" at Book (MZItmspBookPackage)
    Use of the block quote element can cause ePubecheck to give the error "text not allowed here".  Text must not be alone inside of a body tag and if it is not enclosed in some other block level tag, this may lead to the error you are receiving.  

    I have all these errors, can anyone help with this all means? trying to get my book published in iBooks. Nedd your help. Thanks, Jo
    ERROR ITMS-9000: "index_split_000.html(257): attribute "name" not allowed here; expected attribute "accesskey", "charset", "class", "coords", "dir", "href", "hreflang", "id", "rel", "rev", "shape", "style", "tabindex", "target", "title", "type" or "xml:lang"" at Book (MZItmspBookPackage)
    Use of the block quote element can cause ePubecheck to give the error "text not allowed here".  Text must not be alone inside of a body tag and if it is not enclosed in some other block level tag, this may lead to the error you are receiving.  

  • ORA-04044: procedure, function, package, or type is not allowed here

    Hi,
    I am trying to build an object hierarchy.The object hirarcy is for a multi division, multi department, multi cost center and multi operation Organisation.Multiple department can store into multiple divisions, multiple cost center can store into multiple departments, multiple operations can store into multiple cost centers.
    The structure I try to built like this:
    create type div_obj_new as object
    (id number,
    divdesc varchar2(100)
    create type div_obj_tab as
    table of div_obj_new
    create type dept_obj_new as object
    (id number,
    deptdesc varchar2(100),
    dept_div number
    create type dept_obj_tab as
    table of dept_obj_new
    create type cctr_obj_new as object
    (id number,
    cctrdesc varchar2(100),
    cctr_dept number
    create type cctr_obj_tab as
    table of cctr_obj_new
    create type oper_obj_new as object
    (id number,
    operdesc varchar2(100),
    oper_cctr number
    create type oper_obj_tab as
    table of oper_obj_new
    ==========================
    create type div_obj_type as object
    (divid div_obj_tab)
    NOT FINAL
    create type dept_obj_type under div_obj_type
    (deptid dept_obj_tab)
    NOT FINAL
    create type cctr_obj_type under dept_obj_type
    (cctrid cctr_obj_tab)
    NOT FINAL
    create type oper_obj_type under cctr_obj_type
    (operid oper_obj_tab)
    NOT FINAL
    =======This Table creation is not working=================
    create table organisation
    (div div_obj_type,
    dept dept_obj_type,
    cctr cctr_obj_type,
    oper oper_obj_type)
    nested table div store as division_table
    nested table dept store as department_table
    nested table cctr store as costcntr_table
    nested table oper store as operation_table
    nested table oper store as operation_table
    ERROR at line 9:
    ORA-22912: specified column or attribute is not a nested table type
    =========================================================
    Then I try to insert record into the div_obj_type instead of organisation table as it was not working.
    The insert script is as follows:
    ===================================
    insert into div_obj_type values
    div_obj_tab
    (div_obj_new(01,'Division 01'),
    div_obj_new(02,'Division 02'),
    div_obj_new(03,'Division 03'),
    div_obj_new(04,'Division 04')
    dept_obj_tab
    dept_obj_new(10,'Department 10',1),
    dept_obj_new(11,'Department 11',1),
    dept_obj_new(12,'Department 12',2),
    dept_obj_new(13,'Department 13',3),
    dept_obj_new(14,'Department 14',4),
    dept_obj_new(15,'Department 15',5),
    dept_obj_new(16,'Department 16',6),
    dept_obj_new(17,'Department 17',7)
    cctr_obj_tab
    cctr_obj_new(100,'Cost Center 100',10),
    cctr_obj_new(101,'Cost Center 101',11),
    cctr_obj_new(100,'Cost Center 102',12),
    cctr_obj_new(100,'Cost Center 103',13),
    cctr_obj_new(100,'Cost Center 104',14),
    cctr_obj_new(100,'Cost Center 105',15),
    cctr_obj_new(100,'Cost Center 106',16),
    cctr_obj_new(100,'Cost Center 107',17),
    cctr_obj_new(100,'Cost Center 108',10),
    cctr_obj_new(100,'Cost Center 109',11),
    cctr_obj_new(100,'Cost Center 110',12)
    oper_obj_tab
    oper_obj_new(1000,'Operation 1000',100),
    oper_obj_new(1000,'Operation 1001',101),
    oper_obj_new(1000,'Operation 1002',102),
    oper_obj_new(1000,'Operation 1003',103),
    oper_obj_new(1000,'Operation 1004',104),
    oper_obj_new(1000,'Operation 1005',105),
    oper_obj_new(1000,'Operation 1006',106),
    oper_obj_new(1000,'Operation 1007',107),
    oper_obj_new(1000,'Operation 1008',108),
    oper_obj_new(1000,'Operation 1009',109),
    oper_obj_new(1000,'Operation 1010',110),
    oper_obj_new(1000,'Operation 1011',101),
    oper_obj_new(1000,'Operation 1012',102),
    oper_obj_new(1000,'Operation 1013',103),
    oper_obj_new(1000,'Operation 1014',104),
    oper_obj_new(1000,'Operation 1015',105),
    oper_obj_new(1000,'Operation 1016',106),
    oper_obj_new(1000,'Operation 1017',107),
    oper_obj_new(1000,'Operation 1018',108)
    insert into div_obj_type values
    ERROR at line 1:
    ORA-04044: procedure, function, package, or type is not allowed here
    Actually I want to create an object view or object table with all the details of division, department , cost center and operation and it will store depending upon the respective upper level hirarcy 's id.For eg. department details can be fetched through division id etc..
    So I can't figure out what to do for this kind of structure and how to do that.
    I am running Oracle Release 2 (9.2.0.1.0) for Windows 2000.
    Any help , advice or suggestions will be appreciated.
    Thanks & Regards
    Nihar

    Hi Cameron,
    Thanks for your great suggestion.Actually what you have suggested is correct and it was tested by me correctly.But actually I want to store records in the multiple objects hirarcy depending upon the respective upper level hirarcy 's id.For say how can I retrive all records related to divisionID which is in the top level hirarchy? So by selecting divisionID=01, how can I easily select all depts,cost centers and Operation details?
    Again I have another problem , when try to retrive record using PL/SQL I got some problem.
    Structure as created above.Again I am giving here.
    create type div_obj_new as object
    (id number,
    divdesc varchar2(100)
    create type div_obj_tab as
    table of div_obj_new
    create type dept_obj_new as object
    (id number,
    deptdesc varchar2(100),
    dept_div number
    create type dept_obj_tab as
    table of dept_obj_new
    create type cctr_obj_new as object
    (id number,
    cctrdesc varchar2(100),
    cctr_dept number
    create type cctr_obj_tab as
    table of cctr_obj_new
    create type oper_obj_new as object
    (id number,
    operdesc varchar2(100),
    oper_cctr number
    create type oper_obj_tab as
    table of oper_obj_new
    create table organisation
    (div div_obj_tab,
    dept dept_obj_tab,
    cctr cctr_obj_tab,
    oper oper_obj_tab)
    nested table div store as division_table
    nested table dept store as department_table
    nested table cctr store as costcntr_table
    nested table oper store as operation_table
    insert into organisation values
    div_obj_tab
    (div_obj_new(01,'Division 01'),
    div_obj_new(02,'Division 02'),
    div_obj_new(03,'Division 03'),
    div_obj_new(04,'Division 04')
    dept_obj_tab
    dept_obj_new(10,'Department 10',1),
    dept_obj_new(11,'Department 11',1),
    dept_obj_new(12,'Department 12',2),
    dept_obj_new(13,'Department 13',3),
    dept_obj_new(14,'Department 14',4),
    dept_obj_new(15,'Department 15',5),
    dept_obj_new(16,'Department 16',6),
    dept_obj_new(17,'Department 17',7)
    cctr_obj_tab
    cctr_obj_new(100,'Cost Center 100',10),
    cctr_obj_new(101,'Cost Center 101',11),
    cctr_obj_new(100,'Cost Center 102',12),
    cctr_obj_new(100,'Cost Center 103',13),
    cctr_obj_new(100,'Cost Center 104',14),
    cctr_obj_new(100,'Cost Center 105',15),
    cctr_obj_new(100,'Cost Center 106',16),
    cctr_obj_new(100,'Cost Center 107',17),
    cctr_obj_new(100,'Cost Center 108',10),
    cctr_obj_new(100,'Cost Center 109',11),
    cctr_obj_new(100,'Cost Center 110',12)
    oper_obj_tab
    oper_obj_new(1000,'Operation 1000',100),
    oper_obj_new(1000,'Operation 1001',101),
    oper_obj_new(1000,'Operation 1002',102),
    oper_obj_new(1000,'Operation 1003',103),
    oper_obj_new(1000,'Operation 1004',104),
    oper_obj_new(1000,'Operation 1005',105),
    oper_obj_new(1000,'Operation 1006',106),
    oper_obj_new(1000,'Operation 1007',107),
    oper_obj_new(1000,'Operation 1008',108),
    oper_obj_new(1000,'Operation 1009',109),
    oper_obj_new(1000,'Operation 1010',110),
    oper_obj_new(1000,'Operation 1011',101),
    oper_obj_new(1000,'Operation 1012',102),
    oper_obj_new(1000,'Operation 1013',103),
    oper_obj_new(1000,'Operation 1014',104),
    oper_obj_new(1000,'Operation 1015',105),
    oper_obj_new(1000,'Operation 1016',106),
    oper_obj_new(1000,'Operation 1017',107),
    oper_obj_new(1000,'Operation 1018',108)
    ===============
    declare
    div number;
    divdesc varchar2(100);
    divdetails varchar2(100);
    dept number;
    deptdesc varchar2(100);
    deptdetails varchar2(100);
    cctr number;
    cctrdesc varchar2(100);
    cctrdetails varchar2(100);
    oper number;
    operdesc varchar2(100);
    operdetails varchar2(100);
    cursor c_div is
    select d.id , d.divdesc from table(select div from organisation) d
    where d.id=1;
    --union
    cursor c_dept is
    select dp.id , dp.deptdesc "Dept Details" from table(select dept from organisation) dp
    where dp.dept_div=1;
    --union
    cursor c_cctr is
    select cc.id , cc.cctrdesc "Cctr Details" from table(select cctr from organisation ) cc
    where cc.cctr_dept=10;
    --union
    cursor c_oper is
    select op.id , op.operdesc "Oper Details" from table(select oper from organisation) op
    where op.oper_cctr=100;
    TYPE oper_type IS RECORD
    (oper_no NUMBER,
    oper_desc VARCHAR(50));
    TYPE cctr_type IS RECORD
    (cctr_no NUMBER,
    cctr_desc VARCHAR(50),
         oper_detl oper_type);
    TYPE dept_type IS RECORD
    (dept_no NUMBER,
    dept_desc VARCHAR(50),
         cctr_detl cctr_type);
    TYPE div_type IS RECORD
    (div_no NUMBER,
    div_desc VARCHAR2(50),
    dept_detl dept_type);
         division_rec div_type;
    begin
    for i_div in c_div%rowcount
         loop
         exit when c_div%notfound;
         division_rec.div_no:=i_div.id;
         division_rec.div_desc:=i_div.divdesc;
         dbms_output.put_line('Division details = ' || division_rec.div_no || division_rec.div_desc);
    --end loop;
    for i_dept in c_dept%rowcount
         loop
         exit when c_dept%notfound;
         select dp.id , dp.deptdesc ,
         into
         division_rec.dept_detl.dept_no, division_rec.dept_detl.dept_desc
         from
         table(select dept from organisation) dp
         where dp.dept_div=division_rec.div_no;
    -- division_rec.dept_detl.dept_no:=c_dept.id;
    -- division_rec.dept_detl.dept_desc:=c_dept.deptdesc;
         dbms_output.put_line('Department details = ' || division_rec.dept_detl.dept_no ||      
    division_rec.dept_detl.dept_desc);
    --end loop;
         for i_cctr in c_cctr
              loop
              exit when c_cctr%notfound;
              select cc.id , cc.cctrdesc
              into
              division_rec.dept_detl.cctr_detl.cctr_no ,           
    division_rec.dept==_detl.cctr_detl.cctr_desc
              from
              table(select cctr from organisation ) cc
              where cc.cctr_dept=division_rec.dept_detl.dept_no;
    -- division_rec.dept_detl.cctr_detl.cctr_no:=c_cctr.id;
    -- division_rec.dept_detl.cctr_detl.cctr_desc:=c_cctr.cctrdesc;
         dbms_output.put_line('Cost Center details = ' || division_rec.dept_detl.cctr_detl.cctr_no ||
         division_rec.dept_detl.cctr_detl.cctr_desc);
    --end loop;
              for i_oper in c_oper%rowcount
                   loop
                   exit when c_oper%notfound;
              select op.id , op.operdesc
              into
              division_rec.dept_detl.cctr_detl.oper_detl.oper_no,           
    division_rec.dept_detl.cctr_detl.oper_detal.oper_desc
              from
              table(select oper from organisation) op
              where op.oper_cctr=division_rec.dept_detl.cctr_detl.cctr_no;
    -- division_rec.dept_detl.cctr_detl.oper_detl.oper_no:=c_oper.id;
    -- division_rec.dept_detl.cctr_detl.oper_detal.oper_desc:=c_oper.operdesc;
         dbms_output.put_line('Operation details = ' ||
    division_rec.dept_detl.cctr_detl.oper_detl.oper_no ||
    division_rec.dept_detl.cctr_detl.oper_detal.oper_desc);
    end loop;
    end loop;
    end loop;
    end loop;
    end;
    for i_div in c_div%rowcount
    ERROR at line 46:
    ORA-06550: line 46, column 14:
    PLS-00999: implementation restriction (may be temporary)
    ORA-06550: line 46, column 1:
    PL/SQL: Statement ignored
    New version of PL/SQL bloc
    ==============================
    declare
    div number;
    divdesc varchar2(100);
    divdetails varchar2(100);
    dept number;
    deptdesc varchar2(100);
    deptdetails varchar2(100);
    cctr number;
    cctrdesc varchar2(100);
    cctrdetails varchar2(100);
    oper number;
    operdesc varchar2(100);
    operdetails varchar2(100);
    cnt_div number;
    cnt_dept number;
    cnt_cctr number;
    cnt_oper number;
    cursor c_div is
    select d.id , d.divdesc from table(select div from organisation) d
    where d.id=1;
    --union
    cursor c_dept is
    select dp.id , dp.deptdesc from table(select dept from organisation) dp
    where dp.dept_div=1;
    --union
    cursor c_cctr is
    select cc.id , cc.cctrdesc from table(select cctr from organisation ) cc
    where cc.cctr_dept=10;
    --union
    cursor c_oper is
    select op.id , op.operdesc from table(select oper from organisation) op
    where op.oper_cctr=100;
    TYPE oper_type IS RECORD
    (oper_no NUMBER,
    oper_desc VARCHAR(50));
    TYPE cctr_type IS RECORD
    (cctr_no NUMBER,
    cctr_desc VARCHAR(50),
         oper_detl oper_type);
    TYPE dept_type IS RECORD
    (dept_no NUMBER,
    dept_desc VARCHAR(50),
         cctr_detl cctr_type);
    TYPE div_type IS RECORD
    (div_no NUMBER,
    div_desc VARCHAR2(50),
    dept_detl dept_type);
         division_rec div_type;
    begin
    /*select count(*) into cnt_div from table(select div from organisation) d
    where d.id=1;*/
    for i_div in c_div
         loop
         exit when c_div%notfound;
         division_rec.div_no:=i_div.id;
         division_rec.div_desc:=i_div.divdesc;
         dbms_output.put_line('Division details = ' || division_rec.div_no || division_rec.div_desc);
    --end loop;
    /*select count(*) into cnt_dept from table(select dept from organisation) dp
    where dp.dept_div=i_div.id;*/
    for i_dept in c_dept
         loop
         exit when c_dept%notfound;
         select dp.id , dp.deptdesc
         into
         division_rec.dept_detl.dept_no, division_rec.dept_detl.dept_desc
         from
         table(select dept from organisation) dp
         where dp.dept_div=division_rec.div_no;
    -- division_rec.dept_detl.dept_no:=c_dept.id;
    -- division_rec.dept_detl.dept_desc:=c_dept.deptdesc;
         dbms_output.put_line('Department details = ' || division_rec.dept_detl.dept_no ||      division_rec.dept_detl.dept_desc);
    --end loop;
    /*select count(*) into cnt_cctr from table(select cctr from organisation ) cc
    where cc.cctr_dept=division_rec.dept_detl.dept_no;*/
         for i_cctr in c_cctr
              loop
              exit when c_cctr%notfound;
              select cc.id , cc.cctrdesc
              into
              division_rec.dept_detl.cctr_detl.cctr_no ,           division_rec.dept_detl.cctr_detl.cctr_desc
              from
              table(select cctr from organisation ) cc
              where cc.cctr_dept=division_rec.dept_detl.dept_no;
    -- division_rec.dept_detl.cctr_detl.cctr_no:=c_cctr.id;
    -- division_rec.dept_detl.cctr_detl.cctr_desc:=c_cctr.cctrdesc;
         dbms_output.put_line('Cost Center details = ' || division_rec.dept_detl.cctr_detl.cctr_no ||      division_rec.dept_detl.cctr_detl.cctr_desc);
    --end loop;
    /*select count(*) into c_oper from table(select oper from organisation) op
    where op.oper_cctr=division_rec.dept_detl.cctr_detl.cctr_no;*/
              for i_oper in c_oper
                   loop
                   exit when c_oper%notfound;
              select op.id , op.operdesc
              into
              division_rec.dept_detl.cctr_detl.oper_detl.oper_no,           division_rec.dept_detl.cctr_detl.oper_detl.oper_desc
              from
              table(select oper from organisation) op
              where op.oper_cctr=division_rec.dept_detl.cctr_detl.cctr_no;
    -- division_rec.dept_detl.cctr_detl.oper_detl.oper_no:=c_oper.id;
    -- division_rec.dept_detl.cctr_detl.oper_detl.oper_desc:=c_oper.operdesc;
         dbms_output.put_line('Operation details = ' || division_rec.dept_detl.cctr_detl.oper_detl.oper_no || division_rec.dept_detl.cctr_detl.oper_detl.oper_desc);
    end loop;
    end loop;
    end loop;
    end loop;
    end;
    declare
    ERROR at line 1:
    ORA-01422: exact fetch returns more than requested number of rows
    ORA-06512: at line 64
    I hope you might have the solutions.
    Thanks & Regards
    Nihar

Maybe you are looking for