Nested tables and Inheritance
Hi there,
Im a bit new to SQL and am doing it for my degree at the moment.
We have been set an assignment to create a database from a conceptual schema, and as far as I can tell, i need to implement nested cells into a table that has inheritance both above it and below it. Is this even possible? lol i hope you can actually understand that.
If its not, what would be an alternative?
thanks
michael
sorry, maybe i didnt make myself clear.I AGREE.
do not try to describe in words what you have
It would be helpful if you provided DDL for tables involved.
It would be helpful if you provided DML for test data.
It would be helpful if you provided expected/desired results & a detailed explanation how & why the test data gets transformed or organized.
In other words, post what you start with (table & data)
post expected/desired output & explain how inputs are combined to produce desired results
Similar Messages
-
Nested Tables and Advanced Queues- Please Help.
How do i work with NestedTable type and Advanced Queue.
I have done the following
I have Oracle 8.1.7 enterprise edition.
create type myType as TABLE OF varchar(32);
create type myObject as OBJECT (
id int,
myt myType);
DECLARE
BEGIN
dbms_aqadm.create_queue_table(
queue_table => 'my_queue_table',
multiple_consumers => TRUE,
queue_payload_type => 'myObject',
compatible => '8.1.3'
END;
The Nested Table and Object are created successfully.
but the queue is not created.
I get the following message.
DECLARE
ERROR at line 1:
ORA-22913: must specify table name for nested table column or
attribute
ORA-06512: at "SYS.DBMS_AQADM_SYS", line 2012
ORA-06512: at "SYS.DBMS_AQADM", line 55
ORA-06512: at line 3
I know how to specify the nested table storage clause for
create table statement, but there is no provision for
it in the create_queue_table procedure.
Any help will be greately appriciated.
i have already created and tested aqs with simple data types,
also i have created simple tables with nested table type
elements.
but the combo of Nested tables and AQ is not working.
thanks in advance.Hi Francois. Thank you very much for your reply, but it seems that i still get errors. So let me tell what i have done.
As you suggested me: i have done a block based on a sub-query for the nested-table:
'select courses from department where name= :department.name'.
In the master block(department) i have the when-new-record-instance trigger:
Declare
LC$Req varchar2(256);
Begin
LC$Req := '(select ns.courses from table
( select courses from department where name = ''' || :DEPARTMENT.name || ''' ) ns )';
Go_block('block11');
Clear_Block ;
Set_Block_Property( 'block11', QUERY_DATA_SOURCE_NAME, LC$Req ) ;
Execute_query ;
End ;
Now the errors i receive, this time in the runtime mode are:
- FRM-41380: Cannot set the blocks query data source
-FRM-41003: This function cannot be performed here.
Since it seems that you know how to work with the nested table i would really appreaciate your help. I am new in the nested table and if you could give an ex with my tables it would be great.
Thank you in advance. -
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
mohanHello,
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 -
Using nested tables and varrays in Forms/Reports6i
Hi! Could anybody give practical examples of applications based on nested tables and varrays in Forms/Reports6i.
The possible schema of building user interface and so on.
Thank you.
[email protected]Hi,
Varrays and nested tables are not supported within Forms6i and Reports6i. This means tare is no way to use it.
Frank -
Nested Tables and Forms 9i-please help
Hi
i have the folowing example of a nested table:
CREATE TYPE CourseList AS TABLE OF VARCHAR2(10) -- define TABLE type
CREATE TYPE Student AS OBJECT ( -- create object
id_num INTEGER(4),
name VARCHAR2(25),
address VARCHAR2(35),
status CHAR(2),
courses CourseList) -- declare nested table as attribute
CREATE TYPE Course AS OBJECT (
course_no NUMBER(4),
title VARCHAR2(35),
credits NUMBER(1));
CREATE TYPE CourseList AS TABLE OF Course;
CREATE TABLE department (name VARCHAR2(20),
director VARCHAR2(20),
office VARCHAR2(20),
courses CourseList)
NESTED TABLE courses STORE AS courses_tab;
In Forms i have created a data block based on table department and for managing the nested table courses_tab i found out that i should use a stored procedure:
PROCEDURE procedure_nest (c_c out courses_tab%rowtype) IS
c_c courselist;
BEGIN
select c.name, c.director,office into :department.name, :department.director,
:department.office from department c , table
(select n.courses from department n where c.name =n.name and rownum<=1);
END;
compil error:
error 999 at line 1, column 35
implemntation restriction (may be temporary) ADT or schema level
collection not supported at client side with non-OCI mode.
i really would like to know what shall i do to use and manage the nested table in forms.
Thank you very muchHi Francois. Thank you very much for your reply, but it seems that i still get errors. So let me tell what i have done.
As you suggested me: i have done a block based on a sub-query for the nested-table:
'select courses from department where name= :department.name'.
In the master block(department) i have the when-new-record-instance trigger:
Declare
LC$Req varchar2(256);
Begin
LC$Req := '(select ns.courses from table
( select courses from department where name = ''' || :DEPARTMENT.name || ''' ) ns )';
Go_block('block11');
Clear_Block ;
Set_Block_Property( 'block11', QUERY_DATA_SOURCE_NAME, LC$Req ) ;
Execute_query ;
End ;
Now the errors i receive, this time in the runtime mode are:
- FRM-41380: Cannot set the blocks query data source
-FRM-41003: This function cannot be performed here.
Since it seems that you know how to work with the nested table i would really appreaciate your help. I am new in the nested table and if you could give an ex with my tables it would be great.
Thank you in advance. -
hi friends,
i have a question:
why do we use nested tables and varrays?Read the following and try to understand the examples. Try to relate them to various situations or scenarios where you can implement them. You will understand the benefits.
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/collections.htm#LNPLS005
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/tuning.htm#LNPLS01205 -
How to select data from one nested table and into another nested table
create or replace
TYPE ctxt_code_rec as object
ctxt_header varchar2(10),
header_description varchar2(300),
status varchar2(30),
adjacent_code varchar2(300),
adjacent_desc Varchar2(400),
adjacent_flag varchar2(4000),
adjacent_text_href varchar2(4000)
create or replace
type ctxt_code_table as table of CTXT_CODE_REC
d_table ctxt_code_table ;
v_tab ctxt_code_table ;
Iam trying to select data from d_table to v_tab
using and bulk collect into
select m.*
bulk collect into p_code_result
from table(l_loop_diag_code_table1)m
order by 1;
Receiving error:
ora 94007 : not enoughvalues
Could you please let me know how to solve it?
Thanks,
in advance>
create or replace
TYPE ctxt_code_rec as object
ctxt_header varchar2(10),
header_description varchar2(300),
status varchar2(30),
adjacent_code varchar2(300),
adjacent_desc Varchar2(400),
adjacent_flag varchar2(4000),
adjacent_text_href varchar2(4000)
create or replace
type ctxt_code_table as table of CTXT_CODE_REC
d_table ctxt_code_table ;
v_tab ctxt_code_table ;
Iam trying to select data from d_table to v_tab
using and bulk collect into
select m.*
bulk collect into p_code_result
from table(l_loop_diag_code_table1)m
order by 1;
Receiving error:
ora 94007 : not enoughvalues
Could you please let me know how to solve it?
>
Not unless you provide the code you are actually using.
There is no definition of 'p_code_result' in your post and you say you 'trying to select data from d_table' but there is no code that loads 'd_table' in what you posted.
And the SELECT query you posted actuall selects from an object named 'l_loop_idag_code_table1' which isn't mentioned in your code.
Post the actual code you are using and all of the structures being used.
Also explain why you even need to use nested tables and PL/SQL for whatever it is you are really doing. -
How to assign Values to nested table and pass as parameter to procedure?
How to assign Values to nested table and pass as parameter to procedure?
Below is the Object and its type
create or replace type test_object1 as object
val1 varchar2(50),
val2 varchar2(50),
val3 varchar2(50)
create or replace type test_type1 is table of test_object1;
create or replace type test_object2 as object
val1 varchar2(50),
val2 varchar2(50),
val3 varchar2(50)
create or replace type test_type2 is table of test_object2;
GRANT ALL ON test_object1 TO PUBLIC;
GRANT ALL ON test_type1 TO PUBLIC;
GRANT ALL ON test_object2 TO PUBLIC;
GRANT ALL ON test_type2 TO PUBLIC;
here is the table made of object type:
create table test_object_tpe
sl_num NUMBER,
description VARCHAR2(100),
main_val1 test_type1,
main_val2 test_type2
NESTED TABLE main_val1 STORE AS tot1
NESTED TABLE main_val2 STORE AS tot2;
here is the procedure which inserts values into nested table:
PROCEDURE INSERT_TEST_DATA(sl_num IN NUMBER,
description IN VARCHAR2,
p_main_val1 IN test_type1,
p_main_val2 IN test_type2
IS
BEGIN
FOR rec in p_main_val1.first..p_main_val1.last
LOOP
INSERT INTO xxdl.test_object_tpe
sl_num,
description,
main_val1,
main_val2
VALUES
sl_num
,description
,test_type1 (test_object1(
p_main_val1(rec).val1,
p_main_val1(rec).val2,
p_main_val1(rec).val3
,test_type2 (test_object2( p_main_val2(rec).val1,
p_main_val2(rec).val2,
p_main_val2(rec).val3
END LOOP;
commit;
END INSERT_TEST_DATA;
here is the anonymoys block which assigns values to the object type and pass values into the procedure:
set serveroutput on;
declare
p_sl_num NUMBER := 1001;
p_description VARCHAR2(50) := 'Testing Val1';
inval1 test_type1 := test_type1();
inval2 test_type2 := test_type2();
begin
inval1(1).val1 := 'testx1';
inval1(1).val2 := 'testx2';
inval1(1).val3 := 'testx3';
inval2(1).val1 := 'testy1';
inval2(1).val2 := 'testy2';
inval2(1).val3 := 'testy3';
CSI_PKG.INSERT_TEST_DATA(sl_num => p_sl_num,
description => p_description,
p_main_val1 => inval1,
p_main_val2 => inval2
end;
Can anybody correct me.
Thanks,
LavanThanks for posting the DDL and sample code but whenever you post provide your 4 digit Oracle version (result of SELECT * FROM V$VERSION).
>
How to assign Values to nested table and pass as parameter to procedure?
>
Well you are doing almost everything wrong that could be done wrong.
Here is code that works to insert data into your table (the procedure isn't even needed).
declare
p_sl_num NUMBER := 1001;
p_description VARCHAR2(50) := 'Testing Val1';
inval1 test_type1 := test_type1();
inval2 test_type2 := test_type2();
begin
inval1.extend();
inval1(1) := test_object1('testx1', 'testx2', 'testx3');
inval2.extend();
inval2(1) := test_object2('testy1', 'testy2', 'testy3');
INSERT INTO test_object_tpe
sl_num,
description,
main_val1,
main_val2
VALUES
(p_sl_num, p_description, inval1, inval2);
commit;
end;
/See Example 5-15 Referencing a Nested Table Element in Chap 5 Using PL/SQL Collections and Records in the PL/SQL doc
http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/collections.htm#CJABEBEA
1. You don't even need the procedure since all it does is a simple INSERT into the table which you can do directly (see my code above)
inval1(1).val1 := 'testx1';There is no element one (1) of 'inval1' since you haven't created any elements yet. You need to EXTEND the collection to add an element
inval1.extend();And then there is an empty element but 'inval1' is a container for objects of type 'test_object1' not for scalars like 'val1', 'val2', and 'val3'.
So you can't do
inval1(1).val1 := 'testx1';You have to create an instance of 'test_object1'
inval1(1) := test_object1('testx1', 'testx2', 'testx3');And so on for the other collection
You don't need the procedure (as my sample code shows) but once you populate the variables properly it will work. -
JSP: DispalyTag - Nested table and rows
Hi!
I�d like to know if it�s possibile create new row with dispalytag.
I have a nested table (and long list), but I�d like to have the items under the header, not items in a column of the header. I tried with <tr> but doesn�t work.
Is it possibile to creat a row? And how??? I thought I must use decorators (org.displaytag.model.Row) but when I run my application it doesn't work.
Can you help me?
Thanks
AnnalisaThanks for the quick response. I was thinking I might get a response from someone who had tried it, so I didn't waste time trying it myself. I consider your response is pretty authoritative, and I'll take that as a sign that I should forget the nested tables design.
No, polymorphic views probably won't do the job. I think I'll just go ahead and create staging versions of each detail table with foreign keys back to the master staging table. Then I'll let the wizard create the needed association objects and view links in ADF BC. It will complicate the procedure for applying changes, particularly adding a row to the change history table. But that's the price we'll need to pay.
OTOH - I just had a thought - since the change history table is mostly for auditing, it appears in some reports, but has no CRUD in the application, other than the insert when the changes are applied. If I did that insert with a trigger or some other PL/SQL, then the change history could still be a single table with nested table columns for the details. -
Nested tables and multiset operators in Oracle 10g
Consider the following scenario:
We have two identical relations R and S defined as:
CREATE TABLE R(
a INTEGER,
b table_type)
NESTED TABLE b STORE as b_1;
CREATE TABLE S(
a INTEGER,
b table_type)
NESTED TABLE b STORE as b_2;
where table_typ is defined as
CREATE TYPE table_typ AS TABLE OF VARCHAR2(8);
Suppose we have two instances of R and S, each having one tuple as follows: R(1,table_typ('a','b')) and S(1,table_typ('b','c')).
I would like to "merge" these two simple instances (e.g., achieve the effect of a simple SELECT * FROM R UNION SELECT * FROM S query) and obtain the following resulting instance: Result(1,table_typ('a','b','c')).
Would this be possible in Oracle 10g? A simple UNION does not work (I got a "inconsistent datatypes: expected - got SCOTT.TABLE_TYP" error). I also took a look at the MULTISET UNION operator over nested tables available in Oracle 10g, but it doesn't seem to get me anywhere. Any help on this would be greatly appreciated.
Thank you,
LauraOracle 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> -
Confusion over nested tables and system generated nested tables
Hi,
I have been reading other threads about nested tables, naming and updating them etc, but I have what seems
to me some odd behaviour.
I modified my schema to set the attribute xdb:maintainDom to be false for a collection and then registered
the schema with the generate tables option defaulted to true. The result was that I had to add xdb:tableProps
attributes specifying nested table storage at each element above the collection element, this was because Oracle
was creating tables at each level. So I have this kind of thing:
<xsd:element name="BibPt" xdb:SQLType="BIBPT_T"
xdb:defaultTable="BIBPT"
xdb:tableProps="NESTED TABLE XMLDATA.PTEES.PTEE_SEC.PTEE STORE AS NESTED_PTEE_SEC
NESTED TABLE XMLDATA.INVS.INV STORE AS NESTED_INV_BIBPT TABLESPACE BIBLIO">
<xsd:element name="Ptees" xdb:SQLType="PTEES_T" xdb:tableProps="NESTED TABLE
XMLDATA.PTEE_SEC.PTEE STORE AS NESTED_PTEE_SEC2">When I did this the nested tables were created, but when I loaded data never had anything in them. Instead
I found that nestes tables with systems generated names like "SYSNTxxxxxxxxx" has been created that contained
the data.
When I registered the schema without the tables being generated, I created a table with this syntax:
create table poc_wip2 of xmltype
xmlschema "http://www.derwent.co.uk/wpi.xsd" element "WPI"
NESTED TABLE XMLDATA."BibPt".PTEES.PTEE_SEC.PTEE STORE AS NESTED_PTEE_SEC
NESTED TABLE XMLDATA."BibPt".INVS.INV STORE AS NESTED_INV_BIBPT(Thanks to a posting by Sam Monsarrat which showed me this was possible).
Now I had my named nested tables, which contained the data after it was loaded and no system named
nested tables.
So why the difference?
In the first instance why do my named nested tables stay empty and why does the data go into system
generated tables I have no control over as regards tablespace placement?
Is it possible to have a XML schema registered that only generates tables that I have named with the defaultTable
attribute, rather than all or nothing?
And last but not least, what's the best approach for this, since I want to be able to access the data via indexes
on the nested tables.
Thanks
PeteHi Pete
Would you please publish the schema you are using?
Thanks,
Tobias -
Trying to use the following within Apex:
CREATE TYPE location_typ AS OBJECT (
location_id NUMBER(4),
street_address VARCHAR2(40),
postal_code VARCHAR2(12),
city VARCHAR2(30),
state_province VARCHAR2(25));
CREATE TYPE nt_location_typ AS TABLE OF location_typ;
CREATE TYPE country_typ AS OBJECT (
country_id CHAR(2),
country_name VARCHAR2(40),
locations nt_location_typ);
CREATE TYPE nt_country_typ AS TABLE OF country_typ;
CREATE TABLE region_tab (
region_id NUMBER,
region_name VARCHAR2(25),
countries nt_country_typ)
NESTED TABLE countries STORE AS nt_countries_tab (
(PRIMARY KEY (NESTED_TABLE_ID, country_id))
ORGANIZATION INDEX COMPRESS
NESTED TABLE locations STORE AS nt_locations_tab);
Can get Apex to function in the Tabular Report mode by modifying the query to use the correct syntax:
select "REGION_ID",
"REGION_NAME",
c.COUNTRY_ID,
c.COUNTRY_NAME,
l.LOCATION_ID,
l.STREET_ADDRESS, l.POSTAL_CODE,
l.CITY,
l.STATE_PROVINCE
from "#OWNER#"."REGION_TAB", TABLE(COUNTRIES) C, TABLE(LOCATIONS) L
Built a 'Maintenance' form. Put the Region base column on it. Then built a tabular form (with an updateable query) on the same page to access the first level Nest ( countries). Haven't figured out how to actually edit the values yet, but feel comfortable I will.
But - trying to provide editing to the 2nd level nested table elements creates a problem. First, only 1 updateable query can be on a page. Hmmm - so to get around this I guess I have to build a new page that the calling updateable query will access when selecting one of the tabular form elements. Not elegant by any means. Was hoping to provide a blank form on the right side that would be populated by the Location Nested Table values when a select was made on the first level nest. Oh well.
Just curious how anyone has handled this? I could pass stack between pages for sure, but was hoping page regions would be sufficient to handle this.
Any white papers on this? Anything in the DEMO area to use as a template? The default Demo doesn't provide this based on querying user objects.
Thanks,
Dwight TaylorOracle 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> -
Performance impact using nested tables and object
Hi,
Iam using oracle 11g.
While creating a package, iam using lot of nested tables created based on objects which will be passed between multiple functions in the package..
Will it have any performance impact since all the data is stored in the memory.
How can i measure the performance impact when the data grows ?
Regards,
Oracle User
Edited by: user9080289 on Jun 30, 2011 6:07 AM
Edited by: user9080289 on Jun 30, 2011 6:42 AMuser9080289 wrote:
While creating a package, iam using lot of nested tables created based on objects which will be passed between multiple functions in the package.. Not the best of ideas in general, in PL/SQL. This is not client code that can lay sole claim to most of the memory. It is server code and one of many server processes that need to share the available resources. So capitalism is fine on a client, but you need socialism on the server? {noformat} ;-) {noformat}
Will it have any performance impact since all the data is stored in the memory.Interestingly yes. Usually crunching data in memory is better. In this case it may not be so. The memory used is the most expensive memory Oracle can use - the PGA. Private process memory. This means each process copy running that code, will need lots of memory.
If you're not passing the data structures by reference, it means even bigger demands on memory as the data structure needs to be copied into the call stack and duplicated.
The worse case scenario is that such code consumes so much free server memory, and make such huge demands on having that in pysical memory, it trashes memory management as the swap daemons are unable to keep up with the demand of swapping virtual memory pages into and out of memory. Most CPU time is spend by the swap daemons.
I have seen servers crash due to this. I have seen a single PL/SQL process causing this.
How can i measure the performance impact when the data grows ?Well, you need to look at the impact of your code on PGA memory. It is not SQL performance or I/O performance that is a factor - just how much private process memory your code needs in order to execute. -
Nested table and inner nested tables (CREATE TABLE)
Hello everyone,
I have a problem creating a table with some multilevel user-defined types (and therefore nested tables).
First of all the objects:
type top_object is object (
text_top varchar2(100),
table_a a_object_tbl,
table_b b_object_tbl
type a_object_tbl is table of a_object;
type a_object is object (
text_a varchar2(100)
type b_object_tbl is table of b_object;
type b_object is object (
text_b varchar2(100),
table_c c_object_tbl,
table_d d_object_tbl
type c_object_tbl is table of c_object;
type c_object is object (
text_c varchar2(100)
type d_object_tbl is table of d_object;
type d_object is object (
text_d varchar2(100)
);Shortly: The TOP object contains tables of A and B. B contains tables of C and D.
Okay, now I want to create a table which is containing the TOP object.
My attempt:
create table multilevel_table (
some_value varchar2(100),
data top_object
NESTED TABLE top_object.table_a STORE AS data1,
NESTED TABLE top_object.table_b STORE AS data2
(NESTED TABLE table_c STORE AS data3,
NESTED TABLE table_c STORE AS data4);Obviously this does not work (otherwise I would not have been asking you ;) ). If I skip the "second level", so just by removing table_b from top_object and therefore the "inner nested table" it works.
But on this more complex scenario I don't know the right way or the syntax.
I would appreciate if I get any help or suggestions from you!+1 for Hoek's recommendation of just not using NESTED TABLEs for persistent structures.
But:
create table multilevel_table (
some_value varchar2(100),
data top_object
NESTED TABLE data.table_a STORE AS data1,
NESTED TABLE data.table_b STORE AS data2
(NESTED TABLE table_c STORE AS data3,
NESTED TABLE table_d STORE AS data4) ; -
Decide between Temoporary tables, Nested tables and Arrays
Hello everyone.
I need to convert T-SQL function to PL-SQL.
I have this line in T-SQL:
DECLARE @FTAP TABLE ([Value] [int] PRIMARY KEY NONCLUSTERED NOT NULL, UNIQUE ([Value]ASC )); As I see that, there are several equivalents in PL-SQL:
1. Global temporary table.
2. Nested table.
3. Array.
The table is declared in the function for reusing in the same function.
When the function finished the table should delete.
Also, the table should have index (or primary key...).
What is the best choice?be careful in directly translating SQL server code to Oracle. they are fundamentally different in terminology and in the way they work.
you can use associated arrays with record types:
SQL> declare
2 type rec_demo is record (id number, txt varchar2(100));
3 type tab_demo is table of rec_demo index by binary_integer;
4 v_tab_demo tab_demo;
5 begin
6
7 v_tab_demo(1).id := 23;
8 v_tab_demo(1).txt := 'demo';
9 v_tab_demo(2).id := 54;
10 v_tab_demo(2).txt := 'demo2';
11
12 for i in 1..v_tab_demo.count loop
13 dbms_output.put_line(v_tab_demo(i).txt);
14 end loop;
15
16
17 end;
18 /
demo
demo2you can also use collections in other ways. Most people would advise against using global temporary tables unless there's no other way and even then they'd recommend materialised views etc.
can you elaborate a bit more about how you're using it? if we know what purpose it's being used for we may be able to assist a bit more efficiently.
Maybe you are looking for
-
Multi Mapping using condition & Dynamic Receiver determination – Used XSLT Mapping
Dear Experts, I am struggling to identify an error on the Technical Routing. Firstly according to my scenario, I receive an XML file with multiple PO's and I have to split the file to 2 different target messages. and also according to the source
-
My nano and iPhone4 were face to face for a few seconds and now my iPhone won't turn on. It doesn't do anything. I had just charged it. How do I get my iPhone going again? What happened?
-
How to enable log4j logging on Infoview and CMC on JBoss Appln Server?
Hi I have enabled log4j logging on Web Intelligence (For Analytical Reporting Application). Can anybody help me in enabling logging for CMC and Infoview. Please refer to the below link for more details on Logging in JBoss AS. http://docs.jboss.org/pr
-
Not receiving notifications on both devices...
Hi! I just got an iPad mini, and I love it! The only problem i have is that I'm not receiving notifications on my both ilmy iPad mini and my iphone. For example, I will get a notification from instagram on my iPad mini, but I will not receive that sa
-
Why do I get an error whenever I try to purchase a song.
Currently, whenever I try to download a song, after putting my password in, the responding error I get is "FieldName: null. java.lang.Exception". I've tried brute forcing my way through it, eventually resetting my password, but, even after updating m