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 tableThe 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 AlexanderConvert 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 Puser627163 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? ThanksUser,
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
EdgarOracle 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
-
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