0
我在下面的表中創建了我想要創建爲面向對象表的表格。我不想要通常的關係創建表....我只想學習如何將此錶轉換爲面向對象的表。下面是我的表的照片,它們是怎麼連接:如何將此錶轉換爲Oracle中的面向對象表(對象關係)
我在下面的表中創建了我想要創建爲面向對象表的表格。我不想要通常的關係創建表....我只想學習如何將此錶轉換爲面向對象的表。下面是我的表的照片,它們是怎麼連接:如何將此錶轉換爲Oracle中的面向對象表(對象關係)
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
);
輸出:
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
所以連接三個表我心表時,這將是它? –
@EAlexisT這是一個單一中央表「C_TAB」和其他兩個「A_TAB」和「B_TAB」連接的例子 - 你可以很容易地將一般原理適用於你的特定用例。 – MT0
thx,這幫了我很多:) –