HOW TO PLAY WITH NESTED TABLES
Hi Sir,
It would be pleasure to get any suggestion to know why i am geting following error and how to solve this problem ?
Error Message: JBO-27122: SQL error during statement preparation. Statement: SELECT REF(ExperienceTab), ExperienceTab.SYS_NC_OID$ FROM EXPERIENCE_TAB ExperienceTab
SCENERIO IS LIKE : I m trying to create Business Components .JSP Appl using wizard and then select view objects which has nested table. it is generated successful.
NOW when i try to run it is executing without any errors but it doesn't show any object of nested table. THEN i decide to select nested tables to generate ViewObjects of business components and then generate .JSP file but when i try to execute application to see the result of .JSP pages which has been generated by viewobjects. And this viewobject is generated by the nested tables the above error occurs. I am quite new in Jdev enviornment , your suggestion will be higly appreciated.
I hope my explaination is sufficient to know problem.
Thank you very much.
Musahib : [email protected]
null
Hi Sir,
It would be pleasure to get any suggestion to know why i am geting following error and how to solve this problem ?
Error Message: JBO-27122: SQL error during statement preparation. Statement: SELECT REF(ExperienceTab), ExperienceTab.SYS_NC_OID$ FROM EXPERIENCE_TAB ExperienceTab
SCENERIO IS LIKE : I m trying to create Business Components .JSP Appl using wizard and then select view objects which has nested table. it is generated successful.
NOW when i try to run it is executing without any errors but it doesn't show any object of nested table. THEN i decide to select nested tables to generate ViewObjects of business components and then generate .JSP file but when i try to execute application to see the result of .JSP pages which has been generated by viewobjects. And this viewobject is generated by the nested tables the above error occurs. I am quite new in Jdev enviornment , your suggestion will be higly appreciated.
I hope my explaination is sufficient to know problem.
Thank you very much.
Musahib : [email protected]
null
Similar Messages
-
How to work with nested tables
HI Everybody,
I have a relational table one of whose columns is an object and another column is a collection stored as a nested table. I would like to set up a user interface ADF Rich Client, where I consider the parent table as Master and the nested table as Detail. If I build a READONLY master and detail view with a view link based on the primary key of the parent table, it works fine. However, when I try to generate entities from the views, the detail view object disappears from JDeveloper. Otherwise, when I try to make business components from tables, the nested table is not listed. Do anyone know a solution?
Please help!
Here is the view creation script with table structures:
create or replace view dp_master_view as
select p.dept_no,p.dept_name, p.dept_mgr.idno mgr_idno, p.dept_mgr.name mgr_name,p.dept_mgr.phone mgr_phone from department_persons p
create or replace view dp_detail_view as
select p.dept_no,e.* from department_persons p,table(p.dept_emps) (+) e
SQL> desc department_persons
Name Null? Type
DEPT_NO NOT NULL NUMBER
DEPT_NAME CHAR(20)
DEPT_MGR PERSON_TYP
DEPT_EMPS PEOPLE_TYP
SQL> desc person_typ
Name Null? Type
IDNO NUMBER
NAME VARCHAR2(30)
PHONE VARCHAR2(20)
Thanks, regards
Miklos HERBOLYHI Everybody,
I have a relational table one of whose columns is an object and another column is a collection stored as a nested table. I would like to set up a user interface ADF Rich Client, where I consider the parent table as Master and the nested table as Detail. If I build a READONLY master and detail view with a view link based on the primary key of the parent table, it works fine. However, when I try to generate entities from the views, the detail view object disappears from JDeveloper. Otherwise, when I try to make business components from tables, the nested table is not listed. Do anyone know a solution?
Please help!
Here is the view creation script with table structures:
create or replace view dp_master_view as
select p.dept_no,p.dept_name, p.dept_mgr.idno mgr_idno, p.dept_mgr.name mgr_name,p.dept_mgr.phone mgr_phone from department_persons p
create or replace view dp_detail_view as
select p.dept_no,e.* from department_persons p,table(p.dept_emps) (+) e
SQL> desc department_persons
Name Null? Type
DEPT_NO NOT NULL NUMBER
DEPT_NAME CHAR(20)
DEPT_MGR PERSON_TYP
DEPT_EMPS PEOPLE_TYP
SQL> desc person_typ
Name Null? Type
IDNO NUMBER
NAME VARCHAR2(30)
PHONE VARCHAR2(20)
Thanks, regards
Miklos HERBOLY -
Fill datagridview with Nested Table Object Type ???
Hello everybody, please you help me resolve my problem?
I follow this example: *(A Sample Application using Object-Relational features)* http://download-west.oracle.com/docs/cd/B14117_01/appdev.101/b10799/adobjxmp.htm
And this tutorial: *(Using Oracle User-Defined Types with .NET and Visual Studio)* http://www.oracle.com/technology/obe/hol08/dotnet/udt/udt_otn.htm
Now I have 3 Object Table: Stock, Customer and Purchase Order. With the tutorial it's OK to show the data of Stock and Customer Table [there is no nested table in], but I can't do this with table Purchase Order, the tutorial don't show how to work with Nested Table type [Missing or something ?]
When I try to display the data of table Purchase Order, I get the error:
typeName='LINEITEMLIST_NTABTYP'' is not specified or is invalid*
Follow the tutorial, I generate custom class for this UDT and get another error:
this.STOCK_REF = ((object)(Oracle.DataAccess.Types.OracleUdt.GetValue(con, pUdt, "STOCK_REF")));*
Argument Exception Unhandle: Object attribute is not mapped to a custom type member.*
Can You show me how to do this ? Show the data of the Nested Table in Visual Studio, do I have something wrong ??? Thanks and Best Regards.I think you need to go through the tutorial more carefully. I think you are missing steps.
You are using a REF. Are you creating an object table for the objects to be stored in? Are you dereferencing the REF? This is covered by the Oracle by Example tutorial.
http://www.oracle.com/technology/obe/hol08/dotnet/udt/udt_otn.htm#t11
When you receive the nested table, it will be inside a .NET class. You can create this class by using the Create Custom Class menu item on the nested table type in server explorer.
This class will contain a ToString method and a ToXML method.
The question is, where are you attempting to display the data from this nested table? In a grid?
Does it make sense to display a nested table inside one cell of a grid? No. You would need to construct a special UI that will show the
nested table. Maybe the user clicks on the cell on the grid, which opens a new grid that displays the data. Or maybe there is a second grid on the form that always shows the nested table for the row that the first grid currently has selected.
I realize I am not providing you the code... but it sounds like you need to design a more sohisticated UI than what the tutorial is using -- one that can handle displaying one additional table per row. -
ANSI Standard Join with Nested Table
Does anyone know how to (or whether you actually can) use ansi standard table joins with nested tables.
Non-ansi standard would look something like this
SELECT e.empno
FROM departments d, TABLE(d.employees) e
WHERE d.deptno = 10;
Where d.employees is a nested table.
But if I try ansi-standard I like such:
SELECT e.empno
FROM departments d
JOIN TABLE(d.employees) e
WHERE d.deptno = 10;
I get
ORA-00905: missing keyword
because I have nothing to join it on.
Your help is very much appreciatedBoth replies worked fine.
I think I will go with the NATURAL JOIN as it seems the cleanest option.
Thanks Guru 2748 -
Trying to UNION two views with nested tables
I am using Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod, and my objective is to generate some XML. What I have been doing in the past, is to create a view, and then pass that view to the DBMS_XMLQuery routine. This gives me a CLOB that I pass along to the application. A typical object would be something like:
create or replace type XML_UGroup_Member_Type as object (
username varchar2(128),
group_key varchar2(128));
create or replace type XML_UGroup_Member_List
as table of XML_UGroup_Member_Type;
show errors
Create or replace type XML_UGroup_Type as object (
Group_Space varchar2(32),
group_key varchar2(128),
group_name varchar2(255),
members XML_UGroup_Member_List);
/This particular application will be doing stuff with group information. Pretty simply types - a group with a name and a few other keys, and a list of members. A sample view would be like:
create or replace view xml_department_ugroup_view of xml_ugroup_type
with object identifier ( group_key ) as
Select 'Department',
'Department:' || orgn_code,
'Department_' || orgn_name
cast ( multiset (
select Username, person_id,
'Department:' || effective_orgn
from directory_master dm, logins l
where effective_orgn = dd.orgn_code
and dm.person_id = l.owner)
as XML_UGroup_Member_List )
as members
from directory_departments dd
where dept_include = 'Y';
can select from this view, and I can pass it to the DBMS_XMLQUERY package and get a nice XML document. What I want to is essentially put several of these views together, like
Select * from XML_Department_Ugroup_View
Union
Select * from XML_Portfolio_Ugroup_View;But UNION does not work with nested tables:
ERROR at line 1: ORA-00932: inconsistent datatypes: expected - got SIMON.XML_UGROUP_MEMBER_LIST
What I was hoping to do, was to develop a set of sub views for each of the group "spaces", and then generate a view/object that includes all of the sub views, and be able to operate with that single object.
Thoughts on how to make this work, or on alternate approaches? I have considered calling XMLQuery on each of the sub views and concatenating the XML documents and returning that to the application, but I was hoping to find a more "unified" approach.I modified my approach a bit - I changed the base views to return an XMLType object, like:
create or replace view xml_portfolio_ugroup_xml
as
Select XMLElement("group",
xml_ugroup_type(
'Portfolio',
'Portfolio:' || coas_code || ':' || orgn_Code,
cast ( multiset (
select Username,
from directory_master dm, logins l
where ( effective_orgn, effective_coas ) in
where effective_orgn = dd.orgn_code
and dm.person_id = l.owner
as XML_UGroup_Member_List ))) as grp
from directory_departments dd
where dept_include = 'Y';and then I combined them with something like the following (I expect to adjust this as I learn more about the XML DB support)
create or replace view xml_ugroup_xml as
select xmlconcat(
(select xmlagg(grp) from xml_department_ugroup_xml),
(select xmlagg(grp) from xml_portfolio_ugroup_xml)
) as GROUPS
from dualand as I define more group branches, I can add them into the XMLConCat stanzas. I am still open to suggestions as to ways of doing this better or cleaner, but this at least gets the project moving forward again. -
Import tables with nested table : ORA-00600
In Oracle 9.2
Create object, type as table, and table with nested table (store as syms_ntab) are successfully.
Also its export.
In process of import on another server (also 9.2, 'fromuser=one touser=two') shows errors:
. . importing table "SYMS_NTAB"
IMP-00058: ORACLE error 600 encountered
ORA-00600: internal error code, arguments: [kokeeafi1], [2], [2], [], [], [], [], []
IMP-00075: Warning: The nested table may contain partial rows or duplicate rows
But for all that table is created and error occur on phase inserting strings.
What is this?
In Oracle 8.0.5 i perform similar operation without error.From Oracle error messages and codes manual:
ORA-00600 internal error code, arguments: [string], [string], [string], [string], [string], [string], [string], [string]
Cause: This is the generic internal error number for Oracle program exceptions. It indicates that a process has encountered a low-level, unexpected condition. Causes of this message include:
* timeouts
* file corruption
* failed data checks in memory
* hardware, memory, or I/O errors
* incorrectly restored files
The first argument is the internal message number. Other arguments are various numbers, names, and character strings. The numbers may change meanings between different versions of Oracle.
Action: Report this error to Oracle Support Services after gathering the following information:
* events that led up to the error
* the operations that were attempted that led to the error
* the conditions of the operating system and databases at the time of the error
* any unusual circumstances that occurred before receiving the ORA-00600 message
* contents of any trace files generated by the error
* the relevant portions of the Alter files
Note: The cause of this message may manifest itself as different errors at different times. Be aware of the history of errors that occurred before this internal error. -
PL/SQL add procedure with nested table - Duplicate Thread
Hi,
I am trying to do a procedure to input information for one order and another for 2 orders.
The information I have so far is as follows:
Drop table Orders cascade constraints;
Drop type item_type;
Drop type Item_nested;
Create or Replace Type item_type AS Object (
Cat_code Varchar2(6),
Amount_ord Number(3),
Cost Number(5,2) );
Create or Replace Type item_nested as table of item_type;
Create Table Orders (
Order_no Varchar2(8) constraint pkorder primary key,
Customer_name Varchar2(30),
AddressLine1 Varchar2(20),
AddressLine2 Varchar2(20),
AddressLine3 Varchar2(20),
Town Varchar2(20),
Postcode Varchar2(10),
Country Varchar2(20),
Order_items item_nested,
Order_date Date)
Nested Table Order_items
Store as nested_items return as locator;
This has so far worked but I have not managed the insert procedure.
I am using Oracle SQL*plus
Thanks
SG
Edited by: user10689875 on 11-Jan-2009 03:39Duplicate thread ->
PL/SQL add procedure with nested table
Please remove it & marked it as duplicate.
Regards.
Satyaki De. -
Partition exchange error on table with nested table
On Oracle 11.2.0.1, I have a partitioned table with some partitions that need to be 'archived' (in terms of moving partitions to an 'archive' table).
I have a source table like:
CREATE TABLE IS_PODACI245
ID_OBJEKTA_IDENTIFIKACIJA NUMBER(10),
ID_OBJEKTA NUMBER(20),
DATUM TIMESTAMP(6) NOT NULL,
TZ NUMBER(3),
DATA1 NUMBER(10),
DATA2 NUMBER(6),
DATA3 NUMBER(10),
DATA4 NUMBER,
DATA5 T_NTCIP_CLIMATE_TABLE
NESTED TABLE DATA5 STORE AS IS_PODACI245_STORE_TABLE
TABLESPACE DATA
PARTITION BY RANGE (DATUM)
PARTITION P_201107 VALUES LESS THAN (TIMESTAMP' 2011-08-01 00:00:00')
LOGGING
NOCOMPRESS
TABLESPACE DATA,
PARTITION P_MAXVALUE VALUES LESS THAN (MAXVALUE)
LOGGING
NOCOMPRESS
TABLESPACE DATA
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
CREATE INDEX IDX_IS_PODACI245_KOMPLEKS ON IS_PODACI245
(ID_OBJEKTA_IDENTIFIKACIJA, ID_OBJEKTA, DATUM)
TABLESPACE DATA
LOCAL (
PARTITION P_201107
LOGGING
NOCOMPRESS
TABLESPACE DATA,
PARTITION P_MAXVALUE
LOGGING
NOCOMPRESS
TABLESPACE DATA
NOPARALLEL;
CREATE OR REPLACE TYPE t_ntcip_climate_table as table of t_ntcip_climate_fmt;
CREATE OR REPLACE TYPE t_ntcip_climate_FMT as object
( dev_index number(6)
, dev_description varchar2(512)
, dev_type number(10)
, dev_status number(10)
, dev_mfr_status varchar2(512)
, dev_active number(3)
, dev_test_activation number(10)
/I would like to make exchange partition using stage table, and everything is going fine on all tables, but only on a few of them (listed source is one of them, and they're only tables with nested tables wihin), where I get an error.. but sometimes ;)
on a statement like:
ALTER TABLE IS_PODACI245_ARH EXCHANGE PARTITION P_201106 WITH TABLE IS_PODACI245_STAGE EXCLUDING INDEXES WITHOUT VALIDATION;I got an error:
ORA-00001: unique constraint (TXV.SYS_C0032911) violated
it's an unique index between parent and nested table.
what could cause that problem?Dear,
I suppose that the unique constraint
ORA-00001: unique constraint (TXV.SYS_C0032911) violatedis the one you 've created on the nested table IS_PODACI245_STORE_TABLE
If so, why not disable that constraint and try again.
I have never exchanged such a kind of partitioned table having a nested table in it. But, I could imagine that the cloned non partitioned table IS_PODACI245_STAGE should at least be the exact image of the partitioned table IS_PODACI245_ARH (of course without the partition part) but with the nested table part and including all indexes
In addition, if you have a parent/child relationship between your partitioned tables, then there is a chronological order of exchange starting by the child and then finishing by the parent
see the following link for more information about this order of exchange (and comment 2 for an example also)
http://jonathanlewis.wordpress.com/2006/12/10/drop-parent-partition/#more-65
Hope this helps
Mohamed Houri -
Problem when expanding Tree - Tree with nested table column
Hi, i have created the tree using the Tree with nested table column.
I have created a node called TREE_ROOT in the context.
This node has few attributes which includes children_loaded, is_leaf, is_expanded.
I have created the recursive node TREE_SUB for the above node TREE_ROOT.
In the view, i have created the table with the master column. The above attributes have been mapped accordingly. I have created the action handler for load_children.
In this action handler method, i receive the context_element correctly. In this method, i determine the children of the selected element and the resulting children are attached to this context_element.
But the problem is: when i add elements to context_elements in the method load_children, these
elements get added to the node TREE_ROOT as well.
Please help.
thanks and best regards,
PramodI just use some types defined in this user... Well, I hope you know what is the type definition of d_period_sec,
don't you ? I didn't ask to provide all types existed now, only types you are
using.
Anyhow you have been granted with execute privilege for types you are using:
SQL> conn tau_tll/tau_tll;
Connected.
SQL> create or replace type d_period_sec as object (date# date);
2 /
Type created.
SQL> grant execute on d_period_sec to public with grant option;
Grant succeeded.
SQL> conn scott/tiger
Connected.
SQL> CREATE OR REPLACE TYPE unit_function AS OBJECT (
2 xi NUMBER,
3 yi NUMBER,
4 xe NUMBER,
5 ye NUMBER,
6 xm NUMBER,
7 ym NUMBER,
8 v NUMBER,
9 a NUMBER,
10 f NUMBER,
11 descr VARCHAR2 (20)
12 );
13 /
Type created.
SQL> grant execute on unit_function to master;
Grant succeeded.
SQL> CREATE OR REPLACE TYPE unit_moving_point AS OBJECT
2 (
3 p tau_tll.d_period_sec, -- from user TAU_TLL
4
5 m unit_function
6 )
7 /
Type created.
SQL> grant execute on unit_moving_point to master;
Grant succeeded.
SQL> CREATE OR REPLACE TYPE moving_point_tab AS TABLE OF unit_moving_point;
2 /
Type created.
SQL> grant execute on moving_point_tab to master;
Grant succeeded.
SQL> CREATE OR REPLACE TYPE moving_point AS OBJECT (u_tab moving_point_tab);
2 /
Type created.
SQL> grant execute on moving_point to master;
Grant succeeded.
SQL> conn master/master
Connected.
SQL> CREATE TABLE MPOINTS (
2 id NUMBER,
3 mpoint scott.Moving_Point)
4 NESTED TABLE mpoint.u_tab store as moving_tab;
Table created.Rgds. -
How to join PLSQL nested table with normal tables ?
my requirement is to delete the rows in a normal oracle table in one statement, based on the values collected in a PL/SQL nested table which is filled by another program.
In the following example, i need to delete the rows in
the table c_journals where the columns branch_code and
id are having values which exist in the PL/SQL
nested table's columns a and b respectively
declare
type test_type IS RECORD (a VARCHAR2(20), b number(20));
type test_table is table of test_type index by binary_integer;
test_object test_table;
cnt number;
begin
test_object(1).a := '1000';
test_object(1).b := 1;
test_object(2).a := '1006';
test_object(2).b := 4;
/* to be completed */
delete c_journals where ....
end;
Is this possible in Oracle ? Iam using the version 9iR2
Thanks in advanceBoth of the following delete statements should work. For the second the two types need to be created as database objects.
declare
type test_type IS RECORD (a VARCHAR2(20), b number(20));
type test_table is table of test_type index by binary_integer;
test_object test_table; -- := test_table(test_type('1000',1), test_type('1006',4));
cnt number;
begin
test_object(1).a := '1000';
test_object(1).b := 1;
test_object(2).a := '1006';
test_object(2).b := 4;
for i in test_object.first .. test_object.last loop
delete from c_journals cj
where test_object(i).a = cj.branch_code
and test_object(i).b = cj.id;
end loop;
end;
create or replace type test_type IS object (a VARCHAR2(20), b number(20));
create or replace type test_table is table of test_type;
declare
test_object test_table := test_table(test_type('1000',1), test_type('1006',4));
cnt number;
begin
delete from c_journals cj
where exists (select 'x' from table(cast(test_object as test_table)) t
where cj.branch_code = t.a and cj.id = t.b);
end;
/ -
Hi ,
Please assist as how can we do this thing
i have a nested table of object type
create or replace type a1 as object
a number,
b varchar2(30),
region varchar2(30)
create type a1_array s table of a1;
declare
v_a1 a1;
v_a1_array a1_array:=a1_array();
begin
v_a1= a1(1, '1' , 'AUS');
v_a1_array.EXTEND;
v_a1_array(1):=v_a1;
v_a1= a1(2, '2' , 'AUS');
v_a1_array.EXTEND;
v_a1_array(2):=v_a1;
v_a1= a1(3, '3' , 'NAM');
v_a1_array.EXTEND;
v_a1_array(3):=v_a1;
end;
Now, i have v_a1_array having 3 rows 2 with AUS region and one with NAM region.
Using SQL can i extract only 'AUS' rows and fetch in ARRAY OF TYPE v_a1_array (using Where clause and Table () functions )
Any help will be highly appreciated. Please assist. I have oracle 11g
ThanksHi,
GPU has already shown you how to do. I will just modify my original one:
SQL*Plus: Release 11.2.0.1.0 Production on Thu Aug 22 22:14:42 2013
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> set serveroutput on
SQL>
SQL> DECLARE
2 v_a1 a1;
3 v_a1_array a1_array := a1_array ();
4 v_a1_array2 a1_array;
5 BEGIN
6 v_a1 := a1 (1, '1', 'AUS');
7 v_a1_array.EXTEND;
8 v_a1_array (1) := v_a1;
9 v_a1 := a1 (2, '2', 'AUS');
10 v_a1_array.EXTEND;
11 v_a1_array (2) := v_a1;
12 v_a1 := a1 (3, '3', 'NAM');
13 v_a1_array.EXTEND;
14 v_a1_array (3) := v_a1;
15
16 SELECT a1(a, b, region)
17 BULK COLLECT INTO v_a1_array2
18 FROM TABLE (v_a1_array)
19 WHERE region = 'AUS';
20
21 FOR c1 IN (SELECT *
22 FROM TABLE (v_a1_array2))
23 LOOP
24 DBMS_OUTPUT.put_line ('A='||c1.a||', B='||c1.b||', REGION='||c1.region);
25 END LOOP;
26 END;
27 /
A=1, B=1, REGION=AUS
A=2, B=2, REGION=AUS
PL/SQL procedure successfully completed.
If you consider your question answered, please mark this thread as answered.
Regards.
Alberto -
How to DEREF a nested Table of REFs?
Can someone provide an example of how to deference, DEREF, a nested table of refs? (i.e. in order to access the attributes of the objects whose references appear in the nested table)
I'm creating object views based on relational tables. One of my object views contains a nested table of refs which represents a FK relationship, (1:M).
We're running ORACLE 8.1.7
EXAMPLE DDL:
/* FORWARD DECLARATIONS SO THINGS COMPILE */
CREATE TYPE TEST_DAY_T AS OBJECT
CREATE TYPE TEST_SECTION_T AS OBJECT
/* COLLECTION TYPES */
CREATE OR REPLACE
TYPE TEST_SECTION_REFTAB_T AS TABLE OF REF TEST_SECTION_T
/* OBJECT TYPES */
CREATE OR REPLACE
TYPE TEST_DAY_T AS OBJECT
(TEST_ID NUMBER(12)
,TEST_DAY NUMBER(1)
,TEST_SECTIONS TEST_SECTION_REFTAB_T
CREATE OR REPLACE
TYPE TEST_SECTION_T AS OBJECT
(TEST_ID NUMBER(12)
,TEST_DAY NUMBER(1)
,SECTION_SEQ NUMBER(3)
,SECTION_NAME VARCHAR2(32)
/* TABLE DEFS */
CREATE TABLE test_day
test_id NUMBER(12) NOT NULL,
test_day NUMBER(1) NOT NULL
ALTER TABLE test_day
ADD CONSTRAINT test_day_pk PRIMARY KEY (test_id,test_day)
CREATE TABLE test_section
test_id NUMBER(12) NOT NULL,
test_day NUMBER(1) NOT NULL,
section_seq NUMBER(3) NOT NULL,
section_name VARCHAR2(32) NOT NULL
ALTER TABLE test_section
ADD CONSTRAINT test_section_pk PRIMARY KEY (test_id,test_day,section_seq)
ALTER TABLE test_section
ADD CONSTRAINT test_section_fk01 FOREIGN KEY (test_id,test_day)
REFERENCES TEST_DAY(test_id,test_day)
/* OBJECT VIEWS */
CREATE OR REPLACE VIEW v_test_section_obj
OF TEST_SECTION_T
WITH OBJECT OID (TEST_ID, TEST_DAY, SECTION_SEQ)
AS
SELECT TS.TEST_ID,
TS.TEST_DAY,
TS.SECTION_SEQ,
TS.SECTION_NAME
FROM TEST_SECTION TS
CREATE OR REPLACE VIEW v_test_day_obj
OF TEST_DAY_T
WITH OBJECT OID (TEST_ID, TEST_DAY)
AS
SELECT TD.TEST_ID,
TD.TEST_DAY,
CAST(MULTISET(SELECT ref(tso)
FROM v_test_section_obj tso
WHERE tso.test_id = td.test_id
AND tso.test_day = td.test_day) AS TEST_SECTION_REFTAB_T)
FROM TEST_DAY TD
/* CLEANUP */
DROP VIEW v_test_day_obj
DROP VIEW v_test_section_obj
DROP TYPE TEST_SECTION_REFTAB_T
DROP TYPE TEST_DAY_T
DROP TYPE TEST_SECTION_T
DROP TABLE TEST_SECTION
DROP TABLE TEST_DAYMartin,
You can check out an example online at http://otn.oracle.com/docs/products/oracle9i/doc_library/release2/appdev.920/a96594/adobjvew.htm#436463.
Regards,
Geoff
Can someone provide an example of how to deference, DEREF, a nested table of refs? (i.e. in order to access the attributes of the objects whose references appear in the nested table)
I'm creating object views based on relational tables. One of my object views contains a nested table of refs which represents a FK relationship, (1:M).
We're running ORACLE 8.1.7
EXAMPLE DDL:
/* FORWARD DECLARATIONS SO THINGS COMPILE */
CREATE TYPE TEST_DAY_T AS OBJECT
CREATE TYPE TEST_SECTION_T AS OBJECT
/* COLLECTION TYPES */
CREATE OR REPLACE
TYPE TEST_SECTION_REFTAB_T AS TABLE OF REF TEST_SECTION_T
/* OBJECT TYPES */
CREATE OR REPLACE
TYPE TEST_DAY_T AS OBJECT
(TEST_ID NUMBER(12)
,TEST_DAY NUMBER(1)
,TEST_SECTIONS TEST_SECTION_REFTAB_T
CREATE OR REPLACE
TYPE TEST_SECTION_T AS OBJECT
(TEST_ID NUMBER(12)
,TEST_DAY NUMBER(1)
,SECTION_SEQ NUMBER(3)
,SECTION_NAME VARCHAR2(32)
/* TABLE DEFS */
CREATE TABLE test_day
test_id NUMBER(12) NOT NULL,
test_day NUMBER(1) NOT NULL
ALTER TABLE test_day
ADD CONSTRAINT test_day_pk PRIMARY KEY (test_id,test_day)
CREATE TABLE test_section
test_id NUMBER(12) NOT NULL,
test_day NUMBER(1) NOT NULL,
section_seq NUMBER(3) NOT NULL,
section_name VARCHAR2(32) NOT NULL
ALTER TABLE test_section
ADD CONSTRAINT test_section_pk PRIMARY KEY (test_id,test_day,section_seq)
ALTER TABLE test_section
ADD CONSTRAINT test_section_fk01 FOREIGN KEY (test_id,test_day)
REFERENCES TEST_DAY(test_id,test_day)
/* OBJECT VIEWS */
CREATE OR REPLACE VIEW v_test_section_obj
OF TEST_SECTION_T
WITH OBJECT OID (TEST_ID, TEST_DAY, SECTION_SEQ)
AS
SELECT TS.TEST_ID,
TS.TEST_DAY,
TS.SECTION_SEQ,
TS.SECTION_NAME
FROM TEST_SECTION TS
CREATE OR REPLACE VIEW v_test_day_obj
OF TEST_DAY_T
WITH OBJECT OID (TEST_ID, TEST_DAY)
AS
SELECT TD.TEST_ID,
TD.TEST_DAY,
CAST(MULTISET(SELECT ref(tso)
FROM v_test_section_obj tso
WHERE tso.test_id = td.test_id
AND tso.test_day = td.test_day) AS TEST_SECTION_REFTAB_T)
FROM TEST_DAY TD
/* CLEANUP */
DROP VIEW v_test_day_obj
DROP VIEW v_test_section_obj
DROP TYPE TEST_SECTION_REFTAB_T
DROP TYPE TEST_DAY_T
DROP TYPE TEST_SECTION_T
DROP TABLE TEST_SECTION
DROP TABLE TEST_DAY -
Data pump import error with nested tables
So the problem is somewhat long :)
Actually the problems are two - why and how oracle are treating OO concept and why data pump doesn't work?
So scenario for the 1st one:
1) there is object type h1 and table of h1
2) there is unrelated object type row_text and table of row_text
3) there is object type h2 under h1 with attribute as table of row_text
4) there is table tab1 with column b with data type as table of h1. Of course column b is stored as nested table.
So how do you think - how many nested tables Oracle will create? The correct answer is 2. One explicitly defined and one hidden with system
generated name for the type h2 which is under type h1. So the question is WHY? Why if I create an instance of supertype Oracle tries to adapt
it for the subtype as well? Even more if I create another subtype h3 under h1 another hidden nested table appears.
This was the first part.
The second part is - if I do schema export and try to import it in another schema I got error saying that oracle failed to create storage table for
nested table column b. So the second question is - if Oracle has created such a mess with hidden nested tables how to import/export to another
schema?
Ok and here is test case to demonstrate problems above:
-- creating type h1 and table of it
SQL> create or replace type h1 as object (a number)
2 not final;
3 /
Type created.
SQL> create or replace type tbl_h1 as table of h1;
2 /
Type created.
-- creating type row_text and table of it
SQL> create or replace type row_text as object (
2 txt varchar2(100))
3 not final;
4 /
Type created.
SQL> create or replace type tbl_row_text as table of row_text;
2 /
Type created.
-- creating type h2 as subtype of h1
SQL> create or replace type h2 under h1 (some_texts tbl_row_text);
2 /
Type created.
SQL> create table tab1 (a number, b tbl_h1)
2 nested table b
3 store as tab1_nested;
Table created.
-- so we have 2 nested tables now
SQL> select table_name, parent_table_name, parent_table_column
2 from user_nested_tables;
TABLE_NAME PARENT_TABLE_NAME
PARENT_TABLE_COLUMN
SYSNTfsl/+pzu3+jgQAB/AQB27g== TAB1_NESTED
TREAT(SYS_NC_ROWINFO$ AS "GINTS"."H2")."SOME_TEXTS"
TAB1_NESTED TAB1
B
-- another subtype of t1
SQL> create or replace type h3 under h1 (some_texts tbl_row_text);
2 /
Type created.
-- plus another nested table
SQL> select table_name, parent_table_name, parent_table_column
2 from user_nested_tables;
TABLE_NAME PARENT_TABLE_NAME
PARENT_TABLE_COLUMN
SYSNTfsl/+pzu3+jgQAB/AQB27g== TAB1_NESTED
TREAT(SYS_NC_ROWINFO$ AS "GINTS"."H2")."SOME_TEXTS"
SYSNTfsl/+pz03+jgQAB/AQB27g== TAB1_NESTED
TREAT(SYS_NC_ROWINFO$ AS "GINTS"."H3")."SOME_TEXTS"
TAB1_NESTED TAB1
B
SQL> desc "SYSNTfsl/+pzu3+jgQAB/AQB27g=="
Name Null? Type
TXT VARCHAR2(100)OK let it be and now I'm trying to export and import in another schema:
[oracle@xxx]$ expdp gints/xxx@xxx directory=xxx dumpfile=gints.dmp logfile=gints.log
Export: Release 11.2.0.1.0 - Production on Thu Feb 4 22:32:48 2010
<irrelevant rows skipped>
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "GINTS"."TAB1" 0 KB 0 rows
. . exported "GINTS"."SYSNTfsl/+pz03+jgQAB/AQB27g==" 0 KB 0 rows
. . exported "GINTS"."TAB1_NESTED" 0 KB 0 rows
. . exported "GINTS"."SYSNTfsl/+pzu3+jgQAB/AQB27g==" 0 KB 0 rows
Master table "GINTS"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************And now import. In order to create types transformation of OIDs is applied and also remap_schema
Although it fails to create the table.
[oracle@xxx]$ impdp gints1/xxx@xxx directory=xxx dumpfile=gints.dmp logfile=gints_imp.log remap_schema=gints:gints1 transform=OID:n
Import: Release 11.2.0.1.0 - Production on Thu Feb 4 22:41:48 2010
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Release 11.2.0.1.0 - Production
Master table "GINTS1"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
Starting "GINTS1"."SYS_IMPORT_FULL_01": gints1/********@xxx directory=xxx dumpfile=gints.dmp logfile=gints_imp.log remap_schema=gints:gints1 transform=OID:n
Processing object type SCHEMA_EXPORT/USER
ORA-31684: Object type USER:"GINTS1" already exists
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TYPE/TYPE_SPEC
Processing object type SCHEMA_EXPORT/TABLE/TABLE
ORA-39083: Object type TABLE:"GINTS1"."TAB1" failed to create with error:
ORA-02320: failure in creating storage table for nested table column B
ORA-00904: : invalid identifier
Failing sql is:
CREATE TABLE "GINTS1"."TAB1" ("A" NUMBER, "B" "GINTS1"."TBL_H1" ) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
ORA-39083: Object type INDEX_STATISTICS failed to create with error:
ORA-01403: no data found
ORA-01403: no data found
Failing sql is:
DECLARE I_N VARCHAR2(60); I_O VARCHAR2(60); c DBMS_METADATA.T_VAR_COLL; df varchar2(21) := 'YYYY-MM-DD:HH24:MI:SS'; BEGIN DELETE FROM "SYS"."IMPDP_STATS"; c(1) := DBMS_METADATA.GET_STAT_COLNAME('GINTS1','TAB1_NESTED',NULL,'TREAT(SYS_NC_ROWINFO$ AS "GINTS"."H2")."SOME_TEXTS"',1); DBMS_METADATA.GET_STAT_INDNAME('GINTS1','TAB1_NESTED',c,1,i_o,i_n); INSERT INTO "
ORA-39083: Object type INDEX_STATISTICS failed to create with error:
ORA-01403: no data found
ORA-01403: no data found
Failing sql is:
DECLARE I_N VARCHAR2(60); I_O VARCHAR2(60); c DBMS_METADATA.T_VAR_COLL; df varchar2(21) := 'YYYY-MM-DD:HH24:MI:SS'; BEGIN DELETE FROM "SYS"."IMPDP_STATS"; c(1) := DBMS_METADATA.GET_STAT_COLNAME('GINTS1','TAB1_NESTED',NULL,'TREAT(SYS_NC_ROWINFO$ AS "GINTS"."H3")."SOME_TEXTS"',1); DBMS_METADATA.GET_STAT_INDNAME('GINTS1','TAB1_NESTED',c,1,i_o,i_n); INSERT INTO "
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "GINTS1"."SYS_IMPORT_FULL_01" completed with 4 error(s) at 22:41:52So any idea how to make export/import of such tables?
TIA
GintsTom Kyte has said it repeatedly ... I will repeat it here for you.
The fact that Oracle allows you to build object tables is not an indication that you should.
Store your data relationally and build object_views on top of them.
http://www.morganslibrary.org/reference/object_views.html
If you model properly, and store properly, you don' have any issues. -
Issues with Nested Tables and Adobe Designer
Hi,
I have some strange issues when I am trying to create a nested dynamic table with SAP DATA in Adobe Designer.
My Outer Table has article items and in this table I got a nested charges. For instance the table contains this data:
DATA
|->Article1
|--->charge111
|--->charge211
|
|->Article2
|--->charge122
|--->charge222
Now I am trying to display the data in a Adobe Designer table. But if I create a table with a row article and a repeating row charge all charges will be displayed under the first Article.
This is the result:
DATA
|->Article1
|--->charge111
|--->charge211
|--->charge122
|--->charge222
|
|->Article2
How can I solve this issue? I tried to select data binding on charges like article.DATA.charges.DATA[*] but this don't work.
Anyone an idea?Alex,
Is it print based form or interactvie form.
ABAP
If it is printbased form and if you are designing from SFP, you can use the following solution.
You have to create a nested table in the context as below.
say Table1-> Article ( fields: ARTICLENAME,....other fields) info Table2->cost info(fields:ARTICLENAME,Charge...,other fields).
The 2 tables should contains data as beow.
Table1 data.
1row->Article1 -.....other values.
2row->Article2 -.....other values.
3row->Article3 -.....other values.
Table2 data.
1row->Article1 -Charge11 .....other values.
2row->Article1 -Charge12 .....other values.
3row->Article1 -Charge13 .....other values.
4row->Article2 -Charge21 .....other values.
5row->Article2 -Charge22 .....other values.
6row->Article2 -Charge23 .....other values.
7row->Article3 -Charge31 .....other values.
8row->Article3 -Charge32 .....other values.
9row->Article3 -Charge33 .....other values.
In the context drag table2 into the table1 and define where clause on ARTICLENAME.
In the layout drag nested table in the body page and make alignments.
If your requirement is interactive, may be you can use the similar logic. -
Urgent Help Please, Error with Nested Table
Hello All,
I'm trying to create data mining models based on some medical data. I have combined two tables (Patients) and (tumors) into one table (cancer_patients). In the (cancer_patients) table there is one column (tumors) as nested table column. So I got the following error (ORA-22913) about the nested table. I need an advice about how to fix this error in ODM please
This is the code of the tables
CREATE TABLE "DSS2_MINING"."PATIENTS"
( "PATIENT_ID" VARCHAR2(10 BYTE) NOT NULL ENABLE,
"REGISTRY_ID" NUMBER(10,0),
"RACE" VARCHAR2(2 BYTE),
"***" VARCHAR2(1 BYTE),
"BIRTHDATE_YEAR" NUMBER(4,0),
"NUMBER_OF_PRIMARIES" NUMBER(1,0),
"VITAL_STATUS_RECORD" VARCHAR2(1 BYTE),
"CAUSE_OF_DEATH" VARCHAR2(5 BYTE),
"SURVIVAL_TIME" VARCHAR2(4 BYTE),
"SURVIVAL_TIME_FINAL" NUMBER,
"SURVIVAL_VARIABLE" VARCHAR2(1 BYTE),
CONSTRAINT "PATIENTS_PK" PRIMARY KEY ("PATIENT_ID");
CREATE TABLE "DSS2_MINING"."TUMORS"
( "TUMOR_ID" NUMBER NOT NULL ENABLE,
"PATIENT_ID" VARCHAR2(10 BYTE), -- FK
"SEER_RECORD_NUMBER" NUMBER, -- This column contain a sequance number of the records for each patients
"MARITAL_STATUS" VARCHAR2(1 BYTE),
"AGE" NUMBER,
"DATE_OF_DIAGNOSIS" DATE,
"HISTOLOGY_GROUP" VARCHAR2(2 BYTE),
"BEHAVIOR" VARCHAR2(1 BYTE),
"GRADE" VARCHAR2(1 BYTE),
"DERIVED_AJCC_STAGE_GROUP" VARCHAR2(2 BYTE),
"STAGE_OF_CANCER" VARCHAR2(2 BYTE),
"RADIATION" VARCHAR2(1 BYTE),
"CS_SCHEMA" VARCHAR2(2 BYTE),
"FIRST_PRIMARY_IND" VARCHAR2(1 BYTE),
"TUMOR_SIZE" NUMBER(4,1),
"TUMOR_EXTENSION" VARCHAR2(2 BYTE),
"LYMPH_NODES" VARCHAR2(1 BYTE),
"NODES_POSITIVE" NUMBER,
"ESTROGEN" VARCHAR2(3 BYTE),
"PROGESTERONE" VARCHAR2(3 BYTE),
"SURGERY" VARCHAR2(2 BYTE),
CONSTRAINT "TUMORS_PK" PRIMARY KEY ("TUMOR_ID");
create or replace type tumor_object AS
object(
tumor_id VARCHAR2(1),
marital_status VARCHAR2(1),
age NUMBER(3),
date_of_diagnosis DATE,
cs_schema VARCHAR2(2),
histology_group VARCHAR2(2),
behavior VARCHAR2(1),
grade VARCHAR2(1),
first_primary_ind VARCHAR2(1),
tumor_size NUMBER(4, 1),
tumor_extension VARCHAR2(2),
lymph_nodes VARCHAR2(1),
nodes_positive NUMBER(4),
surgery VARCHAR2(2),
radiation VARCHAR2(1)
create or replace type tumor_table as table of tumor_object;
CREATE TABLE "DSS2_MINING"."CANCER_PATIENTS"
( "PATIENT_ID" VARCHAR2(10 BYTE) NOT NULL ENABLE,
"RACE" VARCHAR2(2 BYTE),
"***" VARCHAR2(1 BYTE),
"NUMBER_OF_PRIMARIES" NUMBER(1,0),
"TUMORS" "DSS2_MINING"."TUMOR_TABLE" ,
"VITAL_STATUS_RECORD" VARCHAR2(1 BYTE),
"CAUSE_OF_DEATH" VARCHAR2(5 BYTE),
"SURVIVAL_TIME_FINAL" NUMBER,
"SURVIVAL_VARIABLE" VARCHAR2(1 BYTE),
CONSTRAINT "CANCER_PATIENTS_PK" PRIMARY KEY ("PATIENT_ID")
NESTED TABLE "TUMORS" STORE AS "TUMORS_STOR_TABLE"Then, I have transferred the data using
INSERT
INTO CANCER_PATIENTS
SELECT PATIENT_ID,
RACE,
NUMBER_OF_PRIMARIES,
SELECT CAST(
COLLECT(
TUMOR_OBJECT(
TUMOR_ID,
MARITAL_STATUS,
AGE,
DATE_OF_DIAGNOSIS,
CS_SCHEMA,
HISTOLOGY_GROUP,
BEHAVIOR,
GRADE,
FIRST_PRIMARY_IND,
TUMOR_SIZE,
TUMOR_EXTENSION,
LYMPH_NODES,
NODES_POSITIVE,
SURGERY ,
RADIATION
AS TUMOR_TABLE
FROM "TUMORS" T
WHERE T.PATIENT_ID = P.PATIENT_ID
VITAL_STATUS_RECORD,
CAUSE_OF_DEATH,
SURVIVAL_TIME_FINAL,
SURVIVAL_VARIABLE
FROM PATIENTS PThanks
A.L
Edited by: user9003901 on Nov 30, 2010 12:23 AMHi
i was using AWM since 9i just because it creates OLAP metadata with a new API called CWM2, and Oracle Enterprise Manager was using a propietary API .
With AWM 10.1.0.4 building your OLAP metadata is very simple, you can define your Dimensions, cubes, measures and even you can load your data from your source system.
You can refer to the Oracle® OLAP Application Developer's Guide where you can find more information on this tool.
And relative to your error i will recommend that you build on a dimension-by-dimension basis and try to validate your OLAP Metadata.
Regards
Maybe you are looking for
-
Open Task Button does not come in Outlook
I have a three level approval workflow in which each level an email is generated to the approve to approve or reject. But suddenly the Open Task Button does not pop up in Outlook 2010 anymore can you tell me why? Srinivasan Kidambi
-
Downloading podcast error message
I am unable to download any free podcasts. I subscribe successfully, but when I click "Get" a grey exclamation point appears immediately. The error message is "There was a problem downloading "the podcast" . The required folder cannot be found. Pleas
-
"sold-to party" role "sales area"
Hi, I'm working at VAR Solution Manager 7.0 SP17. When I create a support message from satelllite system or workcenter this support message is created successfully but when I open it at crm_dno_monitor I get two errors: Pricing data for partner 323 c
-
I downloaded my sons ipod 5g with the latest iOS and now when we try to sync it says we have no space, but there is nothing but a few apps on his ipod and he has plenty of space. The messege says that most of is space is taken up by video but there
-
Hello i have big problem with my MacBook Pro 15 (2011) when i start up my macbook after apple logo show White screen , and i'm trying start up with safe mode but still white screen i'm try every solutions in site This I've done so far: 1) I started i