How to insert into a table with a nested table which refer to another table

Hello everybody,
As the title of this thread might not be very understandable, I'm going to explain it :
In a context of a library, I have an object table about Book, and an object table about Subscriber.
In the table Subscriber, I have a nested table modeling the Loan made by the subscriber.
And finally, this nested table refers to the Book table.
Here the code concerning the creation of theses tables :
Book :
create or replace type TBook as object
number int,
title varchar2(50)
Loan :
create or replace type TLoan as object
book ref TBook,
loaning_date date
create or replace type NTLoan as table of TLoan;
Subscriber :
create or replace type TSubscriber as object
sub_id int,
name varchar2(25)
loans NTLoan
Now, my problem is how to insert into a table of TSubscriber... I tried this query, without any success...
insert into OSubscriber values
*(1, 'LEVEQUE', NTLoan(*
select TLoan(ref(b), '10/03/85') from OBook b where b.number = 1)
Of course, there is an occurrence of book in the table OBook with the number attribute 1.
Oracle returned me this error :
SQL error : ORA-00936: missing expression
00936. 00000 - "missing expression"
Thank you for your help

1) NUMBER is a reserved word - you can't use it as identifier:
SQL> create or replace type TBook as object
  2  (
  3  number int,
  4  title varchar2(50)
  5  );
  6  /
Warning: Type created with compilation errors.
SQL> show err
Errors for TYPE TBOOK:
LINE/COL ERROR
0/0      PL/SQL: Compilation unit analysis terminated
3/1      PLS-00330: invalid use of type name or subtype name2) Subquery must be enclosed in parenthesis:
SQL> create table OSubscriber of TSubscriber
  2  nested table loans store as loans
  3  /
Table created.
SQL> create table OBook of TBook
  2  /
Table created.
SQL> insert
  2    into OBook
  3    values(
  4           1,
  5           'No Title'
  6          )
  7  /
1 row created.
SQL> commit
  2  /
Commit complete.
SQL> insert into OSubscriber
  2    values(
  3           1,
  4           'LEVEQUE',
  5           NTLoan(
  6                  (select TLoan(ref(b),DATE '1985-10-03') from OBook b where b.num = 1)
  7                 )
  8          )
  9  /
1 row created.
SQL> select  *
  2    from  OSubscriber
  3  /
    SUB_ID NAME
LOANS(BOOK, LOANING_DATE)
         1 LEVEQUE
NTLOAN(TLOAN(000022020863025C8D48614D708DB5CD98524013DC88599E34C3D34E9B9DBA1418E49F1EB2, '03-OCT-85'))
SQL> SY.

Similar Messages

  • How to insert into default values in onli 1 column of a table

    if u create a table with onli 1 column
    which can accept a default value of say
    only 100.
    then how do u actualli enter values into the table.
    is there any data dictionary which stores details about default
    values of a table

    The default value for a column is the value that will be stored
    for that column if you do not provide one in your insert
    statement. If you do provide a value, then it will be stored in
    the column.
    You can query user_tab_columns ( or all_ or dba_)to see the
    default value assigned to a column.

  • How to insert into a table from 3 tables?

    Hello,
    How to insert into a table getting values from 3 different tables?
    For example table_A has col_1 to col_10.
    I want to insert into table_A,
    values: col_1 to col_4 are from table_B,
    col_5 is from table_C,
    col_6 to col_10 are from table_D.
    Thanks!

    Normally, you'd do this by joining B, C, and D together. In the simplest case, something like
    INSERT INTO A( col1, ... col10 )
      SELECT B.col1, ..., B.col4,
             C.col5,
             D.col6, ..., D.col10
        FROM B,
             C,
             D,
       WHERE B.someKeyColumn = C.someKeyColumn
         AND C.anotherKeyColumn = D.anotherKeyColumnYou'd have to know how the data in B, C, and D relate to fill in the WHERE clause. This basically tells Oracle how to match the data in a particular row in B with the data in a particular row in C with the data in a particular row in D.
    Justin
    Distributed Database Consulting, Inc.
    http://www.ddbcinc.com/askDDBC

  • How to insert into more than one table at a time also..

    hi,
    i am a newbee.
    how to insert into more than one table at a time
    also
    how to get a autoincremented value of an id say transactionid for a particular accountid.
    pls assume table as
    transactionid accountid
    101 50
    102 30
    103 50
    104 35
    i want 102 for accountid 30 and 103 for accountid 50.
    thank u

    @blushadow,
    You can only insert into one table at a time. Take a look here :
    Re: insert into 2 tables
    @Raja,
    I want how to extract the last incremented value not to insert.Also, I don't understand your thread title... which was "how to insert into more than one table at a time also.. "
    Insert, extract... ? Can you clarify your job ?
    Nicolas.

  • How to insert into a table in database1 from a table in database2?

    hi!
    how to insert into a table in database1 from a table in
    database2?
    can anyone help?
    Tariq.

    using the EXEC_SQL package.
    see form help for detail.
    Regards.

  • How to create a procedure function with a return value of ref cursor?

    Can anybody provide a sample about how to create a procedure function with a return value of REF CURSOR?
    I heard if I can create a function to return a ref cursor, I can use VB to read its recordset.
    Thanks a lot.

    http://osi.oracle.com/~tkyte/ResultSets/index.html

  • Script to comp 2  tables and the difference to be captured in another table

    Hi All,
    I had an urgent requirement and i hope you will answer me and thanks a lot.
    I had two tables (one is custom table i created and another is base table).I created the custom table based upon the base table.
    Now,my requirement is that i need to write a script that compares these two table columns and if there is difference in the tables,we need to capture the difference in another table (third table).
    Eg:
    Say i had person salary as x in table1 for particular person and the salary for this person in table2 is y.So,i need to capture these two columns information in third table.
    Can you please send me your valuable suggestions ASAP.

    insert into diff_table
    select 'A not B', a.* from a minus select 'A not B', b.* from b
    union all
    select 'B not A', b.* from b minus select 'B not A', a.* from a
    /Hemant K Chitale

  • How to insert into 2 tables from the same page (with one button  link)

    Hi,
    I have the following 2 tables....
    Employees
    emp_id number not null
    name varchar2(30) not null
    email varchar2(50)
    hire_date date
    dept_id number
    PK = emp_id
    FK = dept_id
    Notes
    note_id number not null
    added_on date not null
    added_by varchar2(30) not null
    note varchar2(4000)
    emp_id number not null
    PK = note_id
    FK = emp_id
    I want to do an insert into both tables via the application and also via the same page (with one button link). I have made a form to add an employee with an add button - adding an employee is no problem.
    Now, on the same page, I have added a html text area in another region, where the user can write a note. But how do I get the note to insert into the Notes table when the user clicks the add button?
    In other words, when the user clicks 'add', the employee information should be inserted into the Employees table and the note should be inserted into the Notes table.
    How do I go about doing this?
    Thanks.

    Hi,
    These are my After Submit Processes...
    After Submit
    30     Process Row of NOTES     Automatic Row Processing (DML)     Unconditional
    30     Process Row of EMPLOYEES     Automatic Row Processing (DML)     Unconditional
    40     reset page     Clear Cache for all Items on Pages (PageID,PageID,PageID)     Unconditional
    40     reset page     Clear Cache for all Items on Pages (PageID,PageID,PageID)     Unconditional
    40     reset page     Clear Cache for all Items on Pages (PageID,PageID,PageID)     Unconditional
    40     reset page     Clear Cache for all Items on Pages (PageID,PageID,PageID)     Unconditional
    50     Insert into Tables     PL/SQL anonymous block     Conditional
    My pl/sql code is the same as posted earlier.
    Upon inserting data into the forms and clicking the add button, I get this error...
    ORA-06550: line 1, column 102: PL/SQL: ORA-00904: "NOTES": invalid identifier ORA-06550: line 1, column 7: PL/SQL: SQL Statement ignored
         Error      Unable to process row of table EMPLOYEES.
    Is there something wrong with the pl/sql code or is it something else?

  • How to insert into table from a xml with XDE for java?

    want to insert into the oracle tables from the xml with XDE for java, some sample better. thank you.

    XML Document may be stored in a SQL database with XML SQL Utility.
    http://download-west.oracle.com/docs/cd/B13789_01/appdev.101/b10794/adx08xsu.htm#i1008168
    XML Document may be stored in a SQL database with Oracle XML DB.
    http://download-west.oracle.com/docs/cd/B13789_01/appdev.101/b10790/xdb03usg.htm#CEGFECFH

  • How to insert into table from an Datatable ?

    Hi Friend,
    I have a datatable that is created at some point in my SSIS as an object.
    I need to insert the data into a sql table, how should I do that ?
    I have this:
            Dim oleDA As New OleDbDataAdapter
            Dim dt As New DataTable
            Dim col As DataColumn
            Dim row As DataRow
            Dim sMsg As String
            oleDA.Fill(dt, Dts.Variables("history").Value
    and want to insert into a table in a SQL DB
            Dim sqlCon As New SqlClient.SqlConnection("server=Myserver\SQL2008R2;database=MyDB;Integrated Security=SSPI")
            Dim sqlreader As SqlClient.SqlDataReader
            sqlCon.Open()
    Thanks in advance,
    Pat
    Patrick Alexander

    Convert it to a ADO .Net recordset and store it in a object variable in SSIS.
    Then you can use it to populate the table using foreach loop with ado enumerator
    http://www.codeproject.com/Articles/10503/Simplest-code-to-convert-an-ADO-NET-DataTable-to-a
    Please Mark This As Answer if it solved your issue
    Please Vote This As Helpful if it helps to solve your issue
    Visakh
    My Wiki User Page
    My MSDN Page
    My Personal Blog
    My Facebook Page

  • How to insert into table, of table description of table

    Dear All,
    I need to take the table description of the table and i need to insert that description in to a new table column , please help me to how to write the query for these.
    many thanks in advance
    Sreenivasulu P

    user627163 wrote:
    Dear All,
    I need to take the table description of the table and i need to insert that description in to a new table column , please help me to how to write the >query for these.Why insert into a new column into the same table ? That would be madness. :) (kidding)
    You can explore with this :
    [oracle@g5 ~]$ sqlplus scott/tiger
    SQL*Plus: Release 11.1.0.6.0 - Production on Tue Jun 2 09:23:10 2009
    Copyright (c) 1982, 2007, Oracle.  All rights reserved.
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    SQL> create table dtable (tablename varchar2(20),col_name varchar2(20),Not_null varchar2(1), datatype varchar2(20) );
    Table created.
    SQL> desc dtable
    Name                                      Null?    Type
    TABLENAME                                          VARCHAR2(20)
    COL_NAME                                           VARCHAR2(20)
    NOT_NULL                                           VARCHAR2(1)
    DATATYPE                                           VARCHAR2(20)
    SQL> set wrap off
    SQL> SELECT column_name "Name", nullable "Null?",
           CONCAT (CONCAT (CONCAT (data_type, '('), data_length), ')') "Type"
      FROM user_tab_columns
    WHERE table_name = 'EMP';
    Name                           N Type
    EMPNO                          N NUMBER(22)
    ENAME                          Y VARCHAR2(10)
    JOB                            Y VARCHAR2(9)
    MGR                            Y NUMBER(22)
    HIREDATE                       Y DATE(7)
    SAL                            Y NUMBER(22)
    COMM                           Y NUMBER(22)
    DEPTNO                         Y NUMBER(22)
    8 rows selected.
    SQL> INSERT INTO dtable
       SELECT 'emp', column_name, nullable,
              CONCAT (CONCAT (CONCAT (data_type, '('), data_length), ')') "Type"
         FROM user_tab_columns
        WHERE table_name = 'EMP';
    8 rows created.
    SQL> commit;
    Commit complete.
    SQL> select * from dtable;
    TABLENAME            COL_NAME             N DATATYPE
    emp                  EMPNO                N NUMBER(22)
    emp                  ENAME                Y VARCHAR2(10)
    emp                  JOB                  Y VARCHAR2(9)
    emp                  MGR                  Y NUMBER(22)
    emp                  HIREDATE             Y DATE(7)
    emp                  SAL                  Y NUMBER(22)
    emp                  COMM                 Y NUMBER(22)
    emp                  DEPTNO               Y NUMBER(22)
    8 rows selected.
    many thanks in advancecheers
    Sreenivasulu P

  • How to INSERT into table using CORRELATED subquery

    I have 3 tables:
    1.TEMP_PHONE(person_id, phonenumber, phone_type) - this holds all phone numbers relating to a person(just a temporary holding area)
    2.PHONE_CONNECT(PERSON_ID, PHONE_ID) this table shows all the phone numbers relating to an individual. Phone_id is a unique number to identify a phonenumber and type(cell, work, home) - so in this table a person can have multiple phone ids)
    3.MASTER_PHONE(PHONE_ID, PHONENUMBER, PHONE_TYPE) this is a master phone table. each combination of phone number and type has a unique identifier-phone_id.
    What i need to figure out is how to populate PHONE_CONNECT with the information from TEMP_PHONE IF PERSON_ID already exists but phone_id is different. In other words, if the person gets a new phone number, i need to insert a new row into phone_connect.
    Before that step is started, the master_phone is populated first with a new phone_id associated to the phonenumber/type
    any help would be much appreciated. Thanks in advance.
    So far, this is what i have come up with, but not sure if it makes sense:
    insert into phone_connect(person_id)
    select a.person_id
    from temp_phone a
    where
    person_id = (select b.person_id from phone_connect b, master_phone c
    where
    a.person_id=b.person_id
    and b.phone_id <> c.phone_id
    and c.phonenumber||c.phone_type=a.phonenumber||a.phone_type);
    update phone_connect c
    set phone_id=(
    select b.phone_id
    from temp_phone a, master_phone b
    where a.person_id = c.person_id
    and a.phonenumber||a.phone_type = b.phonenumber||b.phone_type)
    where phone_id is null;

    It does. You are right. But that's what i need help with. I don't think my code is correct. After the insert, the code is actually updating the same exact record I just inserted. I'm sure this all can be done with one insert. I just really don't know how to show that in my code.
    I need to insert a new record into phone_connect with person_id and phone_id. phone_id is already populated in master_phone. I guess my problem is how to go about creating the joins to all three tables to make sure im inserting the data correctly, or not inserting data that already exists.

  • How to insert into table when ID auto increment?

    I have a table Employee with EmloyeeID, EmployeeName, Email...
    When i design table in database, i created a Sequence and then Trigger for EmployeeID to auto increment.
    Now in ADF, actually in my web form: I don't want enter values for EmployeeID to insert into table,
    but still error : required for EmployeeID...
    how can i do it? Thanks

    User,
    Always mention your JDev version every time you start a new thread.
    Check this out : Andrejus Baranovskis Blog: How To Implement Gapless Sequence in ADF BC
    -Arun

  • How to insert into xml table from relational table

    I wrote a sqlstaement that selects value from the relational tables. Now I want to replace root node "<event_start01>" with following value to the above selected xml string. My select returns root node and all nodes and elements of the root node.
    I tried holding above sellected value into varchar2 variable but I get ora-00600 error. If I hold above selected values into xmltype variable then I am not able to replace root node with the following value.
    I want to rplace rootnode with the following string.
    INSERT INTO FRMD_EVENT_START01(xml_event_start) VALUES
    (XMLTYPE('<event_start01
    xmlns="event_start01.xsd"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="event_start01.xsd
    event_start01.xsd">

    Normally, you'd do this by joining B, C, and D together. In the simplest case, something like
    INSERT INTO A( col1, ... col10 )
      SELECT B.col1, ..., B.col4,
             C.col5,
             D.col6, ..., D.col10
        FROM B,
             C,
             D,
       WHERE B.someKeyColumn = C.someKeyColumn
         AND C.anotherKeyColumn = D.anotherKeyColumnYou'd have to know how the data in B, C, and D relate to fill in the WHERE clause. This basically tells Oracle how to match the data in a particular row in B with the data in a particular row in C with the data in a particular row in D.
    Justin
    Distributed Database Consulting, Inc.
    http://www.ddbcinc.com/askDDBC

  • How to insert into two differents tables at the same time

    Hi
    I'm newer using JDev, (version 3.1.1.2 cause the OAS seems to support just the JSP 1.0)
    and I want to insert into two differents tables at the same time using one view.
    How can I do that ?
    TIA
    Edgar

    Oracle 8i supports 'INSTEAD OF' triggers on object views so you could use a process similar to the following:
    1. Create an object view that joins your two tables. 'CREATE OR REPLACE VIEW test AS SELECT d.deptno, d.deptname, e.empname FROM DEPT d, EMP E'.
    2. Create an INSTEAD OF trigger on the view.
    3. Put code in the trigger that looks at the :NEW values being processed and determines which columns should be used to INSERT or UPDATE for each table. Crude pseudo-code might be:
    IF :NEW.deptno NOT IN (SELECT deptno FROM DEPT) THEN
    INSERT INTO dept VALUES(:NEW.deptno, :NEW.deptname);
    INSERT INTO emp VALUES (:NEW.deptno, :NEW.empname);
    ELSE
    IF :NEW.deptname IS NOT NULL THEN
    UPDATE dept SET deptname = :NEW.deptname
    WHERE deptno = :NEW.deptno;
    END IF;
    IF :NEW.empname IS NOT NULL THEN
    UPDATE emp SET empname = :NEW.empname
    WHERE deptno = :NEW.deptno;
    Try something along those lines.
    null

Maybe you are looking for

  • Not Allowed to use Adobe Muse in Creative Cloud trial

    I previously had a month-to-month Adobe Muse subscription and just started the Creative Cloud Trial. Because i had canceled my month-to-month subscription, the Muse application will not let me open files unless I renew my subscription - even though I

  • How to get the numeric character in a string

    Hi Experts, I have the following requirement. I am double clicking on the number of a string and I need to get the number as the output. I have string  like String1 : "Account Number 19292 is closed"  I am double clicking on 19292 I want the output a

  • Installation of creative cloud on windows

    Hello, I'm trying to install Creativce cloud on my computer. It is installed but whenever I try to open it, it shows a window completely white and it won't let me do anything. I've tried uninstalling and restarting 1 million times and nothing happens

  • Advice using workspace in custom ADF application

    Submitted on behalf of Mike Rooney (who cannot access this forum): We are analyzing Oracle BPM 11g beta and would like to understand existing resources for building worklist views, task status, bpm reports, etc, into our custom ADF 11g application. W

  • Work flow for release of PO

    HI, I am doing customization settings for work flow for release of PO (Task customizing over view). If the PO created Auto mail should go to the releaser. I configured as below. 1)     I assigned Agent in Task customizing over view. 2)     If I go to