Use of Nested tables

I have a requirement like:-
in my procedure, there will be 2 cursors like printing details of locations of companies like
Name Address City
where name will be fetched from outer cursor & details of branches of that company ie Address, City will be printed from the inner cursor. This is just a example. I want to fetch multiple values of Address & city in a variable which if it is a single variable will give exception " more rows". So, i could use nested tables, i guess. Please, give example of this using nested tables. I hope, my question is clear. Please help, in solving the doubt.
regards.

refer docs for sample programs :
http://download-west.oracle.com/docs/cd/B14117_01/appdev.101/b10807/05_colls.htm#i26701

Similar Messages

  • How can i use the nested table in form 6i

    how can i use the nested table in the form 6i
    ( i.e i want to insert record into the nestred table field ).
    bye siddharth singh

    Nested tables are not supported in Forms 6i, only simple object tables.

  • Problems with Whitespace using nested tables from eclipse dtp oracle plugin

    Hi,
    sending from eclipse to oracle xe fails if whitespace is used:
    Example1: Nested table in nested table
    adress_table_typ has another nested table in it
    that works
    CREATE TABLE x (
    i INTEGER PRIMARY KEY,
    adressen adress_table_typ
    ) NESTED TABLE adressen STORE AS adressen_nt (NESTED TABLE tels STORE AS tels_nt);
    inserting a newline fails
    CREATE TABLE x (
    i INTEGER PRIMARY KEY,
    adressen adress_table_typ
    ) NESTED TABLE adressen STORE AS adressen_nt
    (NESTED TABLE tels STORE AS tels_nt);
    Example2:
    Two nested tables
    CREATE TABLE x (
    i INT PRIMARY KEY,
    l_table_typ,
    m_table_typ
    ) NESTED TABLE laptops STORE AS laptop_nt NESTED TABLE interessen STORE AS interessen_nt;
    and then an insert
    INSERT INTO x VALUES (123456,
    l_typ(laptop_typ('123', 'netop'),
    laptop_typ('234', 'thinkpad'),     
    laptop_typ('345', 'iBook')),
    m_typ('a', 'b', 'c')
    which fails. Note that the INSERT works when copy&pasted to sqlplus. It also works if there is
    just one nested table.
    Am I doing somethig wrong or is this a bug in the eclipse data tools plugin?
    Regards
    - Peter
    PS; It is rather difficult to insert whitespace in that forum editor. Any possibility to have ascii?
    For a "whitespace" question rather important...

    A bit of an update on the original post. I was playing around with the plug-in xml file (e.g. eclipse\plugins\org.eclipse.jst.server.generic.oc4j_1.5.100.v20070608\buildfiles\oracle.10.1.3.xml). I changed the following from "deploy" to "redeploy" and it seems to be working once the applicatoin is initial deployed. Of course, I have to change it back to "deploy" if it is the first time the application is being deployed. However; I would still would like to resolve this if there is something out there that fixes this problem. Or if everything points to an enviornment problem, I can continue to play with it.
    <target name="deploy.j2ee.ear" depends="check.skip.ear.deploy" unless="skip.deploy">
    <antcall target="package.module.ear"/>
    <oracle:redeploy
    deployerUri="${deployer.uri}"
    userId="${oc4j.admin.user}"
    password="${oc4j.admin.password}"
    file="${server.publish.dir}/${module.name}.ear"
    deploymentName="${module.name}"
    bindAllWebApps="${oc4j.bind.website}"/>
    </target>

  • Using nested tables with User Defıned Types.....

    Hi All,
    I defined TEST_1 User Defined Type where VALUE_PART field is a VARCHAR2 type.
    CREATE TYPE TEST_1 AS OBJECT (
                   x NUMBER,
                   y NUMBER,
         VALUE_PART VARCHAR2(50)
    This TEST_1 object type will be used as nested tables in the EMPLOYEE table where each attribute might require different bytes of VARCHAR2’s in the VALUE_PART field.
    CREATE TYPE NAME AS TABLE OF TEST_1;
    CREATE TYPE ADDRESS AS TABLE OF TEST_1;
    CREATE TYPE DEPARTMENT AS TABLE OF TEST_1;
    CREATE TABLE EMPLOYEE (
    SSN NUMBER,
    NAME TEST_1,
    ADDRESS TEST_1,
    DEPARTMENT TEST_1,
    SALARY NUMBER
    NESTED TABLE NAME STORE AS NAME_TABLE;
    NESTED TABLE ADDRESS STORE AS ADDRESS_TABLE;
    NESTED TABLE DEPARTMENT STORE AS DEPARTMENT_TABLE;
    Is it possible to specify VALUE_PART(50) in the TABLE OF statement?
    Is there any way to do that throught methods or some other ways that I may not be aware of?
    For Example:
    /*This should allocate 10 bytes of VARCHAR2. */
    CREATE TYPE NAME AS TABLE OF TEST_1(10);
    /* and 30 bytes of VARCHAR2. */
    CREATE TYPE ADDRESS AS TABLE OF TEST_1(30);
    /*and 10 bytes of VARCHAR2. */
    CREATE TYPE DEPARTMENT AS TABLE OF TEST_1(10);
    Any help is appreciated.
    Thanks a lot.

    Hi,
    We can not specify VALUE_PART(50) in the TABLE OF statement.
    Regards,
    Sailaja

  • Unable to export nested tables and vaarys

    Hai
    How to export nested tables and varrays in oracle 8i (8.1.6) .When exporting nested tables and varrays not exporting .What is the advantage use of nested tables and varrays
    Thanks in advance
    mohan

    Hello,
    I think that with such a new release you should use DataPump (expdp/impdb) to
    export Tables.
    For exporting a complete Schema you may use the following syntax:
    expdp {color:red}+user+{color}/{color:red}+password+{color} PARFILE=pfexport.txt_With pfexport.txt as bellow:_
    SCHEMAS={color:red}+schema_name+{color}
    FLASHBACK_TIME="TO_TIMESTAMP(to_char(SYSDATE,'DD-MM-YYYY HH24:MI:SS'),'DD-MM-YYYY HH24:MI:SS')"
    CONTENT=ALL
    DIRECTORY=EXP_DIR
    DUMPFILE={color:red}+dump_file_name+{color}
    LOGFILE={color:red}+log_file_name+{color}Then, in this example, you'll get the "dump file" and the "log file" into the EXP_DIR Oracle directory (if it exists).
    You can check your Oracle Directories with the following query:
    select * from dba_directories;Then, you can use one of these Directories or create a new one with the following statement
    CREATE OR REPLACE DIRECTORY {color:red}+directory_name+{color} AS '{color:red}+directory_path+{color}';
    GRANT READ,WRITE ON DIRECTORY {color:red}+directory_name+{color} TO {color:red}+user_name+{color};Hope it can help,
    Best regards,
    Jean-Valentin
    Edited by: Lubiez Jean-Valentin on Nov 28, 2009 12:08 PM

  • Multi-level nested tables for repeatable XML Elements

    Hi there,
    Suppose we have a XML Schema „ASchema“ like this (XMLDB schema annotations are left out for simplicity):
    <xs:schema xmlns:xs=" .... " />
    <xs:element name=“A“>
         <xs:complexType>
              <xs:sequence>
                   <xs:element name=“B“ maxOccurs=“unbounded“/>
                        <xs:complexType>
                             <xs:sequence>
                                  <xs:element name = “C“ maxOccurs=“unbounded“/>
                             </xs:sequence>
                        </xs:complexType>
                   </xs:element>
              </xs:sequence>
         </xs:complexType>
    </xs:element>
    </xs:schema>
    After registering this schema in Oracle, I can define a table like this:
    CREATE TABLE ATable
    id NUMBER,
    doc XMLTYPE
    XMLTYPE COLUMN doc
    XMLSCHEMA “ASchema“ ELEMENT “A“
    VARARRAY doc.“XMLDATA“.“B“ STORE AS TABLE “BTable“
    ((PRIMARY KEY (NESTED_TABLE_ID, SYS_NC_ARRAY_INDEX$)) ORGANIZATION INDEX)
    This creates a nested table "BTable" within the table "ATable". So far so good, I can use this nested table to gain faster access on every possible subelement of Element B when I set an appropriate index.
    I now want to create another nested table for element “C“ like this:
    DROP TABLE ATable;
    CREATE TABLE ATable
    id NUMBER,
    doc XMLTYPE
    XMLTYPE COLUMN doc
    XMLSCHEMA “ASchema“ ELEMENT “A“
    VARARRAY doc.“XMLDATA“.“B“ STORE AS TABLE “BTable“
    ((PRIMARY KEY (NESTED_TABLE_ID, SYS_NC_ARRAY_INDEX$)) ORGANIZATION INDEX)
    VARARRAY doc.“XMLDATA“.“B“.“C“ STORE AS TABLE “CTable“
    ((PRIMARY KEY (NESTED_TABLE_ID, SYS_NC_ARRAY_INDEX$)) ORGANIZATION INDEX)
    But this statement fails with the error message something like „ ... no such attribute ... „
    And here's my question: is it possible to create nested tables for repeatable XML Elements that are subelements of other repeatable XML Elements ? And if so, how can I do it ?
    Thank you very much in advance
    Jan

    Found a (partial) solution myself:
    If you add the attribute xdb:storeVarrayAsTable="true" to the root element of the XML schema, Oracle XMLDB generates nested tables for all repeatable XML Elements while registering the XML schema.
    Unfortunately, the names of these nested tables are system-generated, hence it's a bit uncomfortable to set indices on them. You can find out the names of these nested tables as follows:
    select table_name, parent_table_name, parent_table_column from user_nested_tables;
    Further information on that subject is supplied in the following thread:
    Re: default tables for elements with maxoccurs > 1
    It would be nice if there was a way to name the generated nested tables via appropriate XMLDB schema annotations.
    regards
    Jan

  • Reg: Querying Nested table.

    Hi,
    I am facing a problem with querying the Nested table.
    I have created a type
    CREATE OR REPLACE TYPE TY_BOOKS OBJECT(           VC_BOOK_NAME VARCHAR2(64)          );
    CREATE OR REPLACE TYPE NT_TY_BOOKS AS TABLE OF TY_BOOKS;
    I have used this nested table in a table Student.
    CREATE TABLE STUDENT
    ( SID NUMBER(10),
    CL_NT_BOOKS NT_TY_BOOKS)
    NESTED TABLE CL_NT_BOOKS STORE AS CL_NT_BOOKS_TAB;
    The problem is one student can have more than one book. So if I need to select the students who have 'Science' books, i wrote this query.
    SELECT S.SID,B.VC_BOOK_NAME FROM STUDENT S, TABLE(CL_NT_BOOKS) B WHERE B.VC_BOOK_NAME='Science';
    suppose in the table
    SID BOOK_NAME
    1000          CL_NT_BOOKS('Science')
    1001          CL_NT_BOOKS('Maths'),CL_NT_BOOKS('Science')
    This query will return only those student-ids who have only "Science" book not those student-ids who have "Maths" & "Science" books.
    RESULT
    1000          Science
    but not 1001....
    Please can any one send me the select query which can select iteratively for books names which contains more than one value.

    Hmm, mysterious. It works for me on my 9.2.0.6 dB...
    SQL> CREATE OR REPLACE TYPE TY_BOOKS AS  OBJECT( VC_BOOK_NAME VARCHAR2(64) );
      2  /
    Type created.
    SQL> CREATE OR REPLACE TYPE NT_TY_BOOKS AS TABLE OF TY_BOOKS;
      2  /
    Type created.
    SQL> CREATE TABLE STUDENT
      2  ( SID NUMBER(10),
      3  CL_NT_BOOKS NT_TY_BOOKS)
      4  NESTED TABLE CL_NT_BOOKS STORE AS CL_NT_BOOKS_TAB;
    Table created.
    SQL> INSERT INTO student VALUES (1000, NT_TY_BOOKS(TY_BOOKS('Science')))
      2  /
    1 row created.
    SQL> INSERT INTO student VALUES (1001, NT_TY_BOOKS(TY_BOOKS('Science'),TY_BOOKS('Maths')))
      2  /
    1 row created.
    SQL>
    SQL> SELECT S.SID,B.VC_BOOK_NAME FROM STUDENT S, TABLE(CL_NT_BOOKS) B
      2  WHERE B.VC_BOOK_NAME='Science'
      3  /
           SID VC_BOOK_NAME
          1000 Science
          1001 Science
    SQL> What I suggest is most likely to have happened is that you have added a space or some other non-printing cahracter into the book name when you inserted row 1001. If this is not the case then you'll have to do it again in SQL*Plus, cut teh output and paste it here, so we can see what's going on.
    Cheers, APC

  • Nested Tables? Why do I need them?

    Hi! I am reading the PL/SQL reference about collections right now and I have reached the nested tables. And I can not understand the advantages of using them. There is an example there
    INSERT INTO department
    VALUES('English', 'Lynn Saunders', 'Breakstone Hall 205',
    CourseList('Expository Writing',
    'Film and Literature',
    'Modern Science Fiction',
    'Discursive Writing',
    'Modern English Grammar',
    'Introduction to Shakespeare',
    'Modern Drama',
    'The Short Story',
    'The American Novel'));
    So, what is the point of having nested table instead of two separate tables? I think it is a waste of memory, data duplication and problems related to it. Please tell me the real life example of useful use of nested tables. Thanks.

    A practical example of a nested table.
    I have written an application logging API in PL/SQL. Messages wind up being inserted via anonymous transactions into a relational table.
    This PL/SQL logging process also takes a snapshot of the PL/SQL call stack at that point in time and store the stack with the message as a column. The call stack itself is in fact a table. i.e. stack = (handle, object name and source code line number). Thus the STACK column in this table is a nested table.
    One could have used a separate table for the call stack (traditional parent-child relationship). However, there are absolutely nothing in common between the call stack of one message and that of another. One would never want to query all call stacks to find what was the code running at stack level 4, or what line number was used at stack level 2, etc.
    It is much easier to manage and query and maintain the call stack as a nested column (a "dedicated table") for a row as it only ever related to that row and nothing else.

  • Nested Tables and XSU

    Does anyone know if XSU supports the use of nested tables?
    I have looked at the examples in the documentation that show how to use XSU with an object-relational schema. They work great if you have a fairly simple schema, (no nested tables). The XML documents I am trying to get into my database are a bit more complex and contain collections of repeating elements. I have created a schema that includes nested tables to support these repeating elements. My problem is when I try to access the object table via XSU. As long as I don't reference the nested table columns all works fine. Am I trying to do something that is not supported by XSU?

    Steve,
    What release is your database server?
    XSU should work fine with nested tables. Did you check out samples in http://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a96621/adx08xsu.htm#1014730?
    Regards,
    Geoff

  • Nested Tables - Oracle Crashes !

    Hello Everyone
    You might help me to sleep tonight.
    Ok, here is the problem.
    I used a nested table to collect data. After collection, I get repeated records in collection result. I tried to operate to get a distinct result operating SQL operation but oracle gives nasty error and kicks me out the session.
    HERE is the code :
    create or replace package rule_engine
    as
    type t_course_count is table of number(2);
    Procedure main;
    end rule_engine;
    create or replace package body rule_engine
    as
    procedure main
    is
    v_course_count t_course_count:=t_course_count(1,2,3,4);
    i t_course_count;
    begin
    insert into table(i) select * from table(v_course_count);
    end main;
    end rule_engine;
    null

    Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - 64bit Production
    With the Partitioning, OLAP and Data Mining options
    SQL> CREATE OR REPLACE TYPE table_type AS TABLE OF VARCHAR2 (8);
      2  /
    Type created.
    SQL> CREATE TABLE r(
      2    a INTEGER,
      3    b table_type)
      4    NESTED TABLE b STORE as b_1;
    Table created.
    SQL> CREATE TABLE s(
      2    a INTEGER,
      3    b table_type)
      4    NESTED TABLE b STORE as b_2;
    Table created.
    SQL> INSERT INTO r VALUES (1, table_type ('a', 'b'));
    1 row created.
    SQL> INSERT INTO s VALUES (1, table_type ('b', 'c'));
    1 row created.
    SQL> COLUMN c FORMAT A10;
    SQL> SELECT r.a, r.b MULTISET UNION DISTINCT s.b c
      2  FROM   r, s
      3  WHERE  r.a = s.a;
             A C
             1 TABLE_TYPE('a', 'b', 'c')
    SQL>

  • HOw to improve insert/update/select  for nested table.

    Hi All,
    I think this is my second thread for nested table.
    i just want to know what are the different ways available to improve the insert/update/select operation on Nested table.
    Thanks in advance.

    By not using a nested table for data storage in the first place...
    http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:8135488196597
    Perhaps Parallel Query/DML might give some relief.

  • Tables in memory (Nested tables ?)

    For performance reasons, I would like to insert, update, etc...
    a table in memory. Can I use a nested table as if it was a
    normal table ? Can I do updates on nested tables with values
    from normal database tables ??
    Statement like : Update <nested-table> set <nested-
    table>.x=<value> where <nested-table>.y = <normal-table>.y
    Thanks for a quick response.

    The answer is yes and no.
    A nested table is a "collection" and can be referenced in a SQL
    statement using the pseudo-functions THE, CAST, MULTISET and
    TABLE. The nested table and varray collections can be a column
    in a database table (Oracle8) and are persistent. SQL
    statements cannot act on memory held nested tables, varray and
    index-by collections, which are transient. Index-by collections
    are same as the older PL/SQL tables.
    SQL statements cannot operate directly on transient collections.
    For speed you can define an index-by collection as a table of
    rowtype, and move data back and forth from database tables and
    memory held tables using SQL. Records and index-by tables are
    more efficient in Oracle 8 than in Oracle 7
    In PL/SQL you can use replacement (:=) on the record or
    record.column of the rowtype index-by collection. The downside
    is you have to keep track of your own indexing which is only
    BINARY_INTEGER, no SELECT, UPDATE, INSERT using FROM and WHERE
    on transient collections. This works in Oracle 7 also.
    Good Luck.

  • Reg:varray & nested table.

    Dear Friends,
    How varray & Nested table working internally in oracle.?
    When & Why to use varray & nested table.?
    Which is the faster from both of them.?
    Thanks.

    Hmm, mysterious. It works for me on my 9.2.0.6 dB...
    SQL> CREATE OR REPLACE TYPE TY_BOOKS AS  OBJECT( VC_BOOK_NAME VARCHAR2(64) );
      2  /
    Type created.
    SQL> CREATE OR REPLACE TYPE NT_TY_BOOKS AS TABLE OF TY_BOOKS;
      2  /
    Type created.
    SQL> CREATE TABLE STUDENT
      2  ( SID NUMBER(10),
      3  CL_NT_BOOKS NT_TY_BOOKS)
      4  NESTED TABLE CL_NT_BOOKS STORE AS CL_NT_BOOKS_TAB;
    Table created.
    SQL> INSERT INTO student VALUES (1000, NT_TY_BOOKS(TY_BOOKS('Science')))
      2  /
    1 row created.
    SQL> INSERT INTO student VALUES (1001, NT_TY_BOOKS(TY_BOOKS('Science'),TY_BOOKS('Maths')))
      2  /
    1 row created.
    SQL>
    SQL> SELECT S.SID,B.VC_BOOK_NAME FROM STUDENT S, TABLE(CL_NT_BOOKS) B
      2  WHERE B.VC_BOOK_NAME='Science'
      3  /
           SID VC_BOOK_NAME
          1000 Science
          1001 Science
    SQL> What I suggest is most likely to have happened is that you have added a space or some other non-printing cahracter into the book name when you inserted row 1001. If this is not the case then you'll have to do it again in SQL*Plus, cut teh output and paste it here, so we can see what's going on.
    Cheers, APC

  • Jdeveloper pl/sql webservices with Nested Tables

    Hello
    I am using JDeveloper 10.1.3.1.0,I have created pl/sql webservice using the nested tables. This will insert the object data into database tables.after deplying the webservice into external oc4j, when I test the webservice locally with url: http://localmachine:8888/PL_SQL_WS-Nest_Obj_Webservice-context-root/ObjWebserviceSoapHttpPort
    The above web-services working and I am able to insert into the database tables.
    Same when I want to access through the application server, I have changed the wsdl file soap address as
    <soap:address location="http://10.91.20.7:8888/PL_SQL_WS-Nest_Obj_Webservice-context-root/ObjWebserviceSoapHttpPort"/>
    When I access this url, I am able to give the input data
    http://10.91.20.7:8888/PL_SQL_WS-Nest_Obj_Webservice-context-root/ObjWebserviceSoapHttpPort
    but the out from the web-service is:
    <env:Envelope
    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <env:Header/>
    <env:Body>
    <env:Fault
    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <faultcode>env:Server</faultcode>
    <faultstring>Error creating target: DBConnImpMftest.ObjWebserviceUser</faultstring>
    <faultactor/>
    </env:Fault>
    </env:Body>
    </env:Envelope>
    Could any one help to solve the above issue?
    Kind regards
    Malathi

    try that !
    select a.*, case
    when a.item_type = 1 then b.inv_date
    when a.item_type = 3 then c.deb_date
    end as item_date
    from receipt_item a
    left join invoice b on a.item_id = b.invvi_id and a.item_type = 1
    left join Debit c on a.item_id = c.deb_id and a.item_type = 3

  • Nested table in payload of AQ table?

    Hi
    I have created a complex payload type on 11.2.0.3, (blob, type table of object type), but cannot seem to create a queue table with the payload type.
    The multilevel payload type is defined as follows:
    create type ty_property as object (property_name varchar2(100), property_value varchar2(100));
    create type tb_property as table of ty_property;
    create type ty_payload_blob as object (payload_blob blob, tb_payload_props tb_property);
    The exception that is raised is as follows when I attempt to create the create queue table is as follows:
    SQL> select * from v$version;
    BANNER
    Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
    PL/SQL Release 11.2.0.3.0 - Production
    CORE    11.2.0.3.0      Production
    TNS for Linux: Version 11.2.0.3.0 - Production
    NLSRTL Version 11.2.0.3.0 - Production
    SQL> begin
      2    dbms_aqadm.create_queue_table (queue_table=>'TEST_Q1'
      3                                  ,queue_payload_type=>'TY_PAYLOAD_BLOB'
      4                                  ,multiple_consumers=>true
      5                                  ,storage_clause=>'nested table user_data store as ty_payload_blob_store
      6                                                       (nested table tb_payload_props store as tb_payload_props_store)');
      7  end;
      8  /
    begin
    ERROR at line 1:
    ORA-22912: specified column or attribute is not a nested table type
    ORA-06512: at "SYS.DBMS_AQADM", line 81
    ORA-06512: at line 2
    I think it is the STORAGE clause, but I am unsure what storage clause to specify.
    Can anybody help?
    Thanks in advance

    Hi
    Please ignore my post. I've just realised one cannot include nested tables as part of an AQ message payload. It is stated as much in the Oracle documentation :
    You cannot construct a message payload using a VARRAY that is not itself contained within an object. You also cannot currently use a NESTED Table even as an embedded object within a message payload.
    http://docs.oracle.com/cd/E11882_01/server.112/e11013/manage.htm#ADQUE2582

Maybe you are looking for