CREATE TYPE A_TYPE AS OBJECT(
id INT,
col1 INT
);
/
CREATE TYPE A_REF_TABLE_TYPE AS TABLE OF REF A_TYPE;
/
CREATE TYPE B_TYPE AS OBJECT(
id INT,
col1 INT
);
/
CREATE TYPE B_REF_TABLE_TYPE AS TABLE OF REF B_TYPE;
/
CREATE TYPE C_TYPE AS OBJECT(
id INT,
a_list A_REF_TABLE_TYPE,
b_list B_REF_TABLE_TYPE,
col1 INT
);
/
CREATE TABLE A_TAB OF A_TYPE(
ID PRIMARY KEY
);
CREATE TABLE B_TAB OF B_TYPE(
ID PRIMARY KEY
);
CREATE TABLE C_TAB OF C_TYPE(
ID PRIMARY KEY
)
NESTED TABLE a_list STORE AS c_a_lists
NESTED TABLE b_list STORE AS c_b_lists;
INSERT INTO A_TAB VALUES(A_TYPE(1, 3));
INSERT INTO A_TAB VALUES(2, 4);
INSERT INTO B_TAB VALUES (B_TYPE(1, 7));
INSERT INTO B_TAB VALUES (2, 2);
INSERT INTO B_TAB VALUES (3, 10);
INSERT INTO C_TAB VALUES (
1,
A_REF_TABLE_TYPE(
(SELECT REF(a) FROM A_TAB a WHERE ID = 2) -- Single value
),
(-- Multiple values
SELECT CAST(COLLECT(REF(b)) AS B_REF_TABLE_TYPE)
FROM TAB_B b
WHERE ID IN (1, 3)
),
42
);
INSERT INTO C_TAB VALUES (
2,
NULL, -- Unknown
B_REF_TABLE_TYPE(), -- No values
54
);
Ausgang:
SELECT * FROM C_TAB;
ID A_LIST B_LIST COL1
-- ------------------------------- --------------------------------------------- ----
1 A_REF_TABLE_TYPE(A_TYPE(2,4)) B_REF_TABLE_TYPE(B_TYPE(1,7), B_TYPE(3,10)) 42
2 (null) B_REF_TABLE_TYPE() 54
so würde dies wäre es, wenn die drei Tabellen meiner zentriert Tisch verbindet ? –
@EAlexisT Dies ist ein Beispiel für eine einzelne zentrale Tabelle 'C_TAB' und zwei weitere' A_TAB' und 'B_TAB', die damit verbunden sind - Sie können das allgemeine Prinzip leicht an Ihren speziellen Anwendungsfall anpassen. – MT0
thx, das hat mir sehr geholfen :) –