Oracle的table()函數(shù)是一種將集合類型轉(zhuǎn)換為關(guān)系表的方法,它可以將用戶自定義的數(shù)據(jù)類型(如嵌套表、VARRAY等)轉(zhuǎn)換為一個虛擬表,從而在SQL查詢中使用
CREATE TYPE emp_list AS TABLE OF NUMBER;
/
CREATE TABLE dept (
deptno NUMBER,
dname VARCHAR2(30),
loc VARCHAR2(30),
emps emp_list
) NESTED TABLE emps STORE AS emps_nt;
/
INSERT INTO dept VALUES (10, 'HR', 'New York', emp_list(1, 2, 3));
INSERT INTO dept VALUES (20, 'IT', 'San Francisco', emp_list(4, 5, 6));
INSERT INTO dept VALUES (30, 'Finance', 'Los Angeles', emp_list(7, 8, 9));
COMMIT;
/
SELECT d.deptno, d.dname, d.loc, e.column_value AS empno
FROM dept d, TABLE(d.emps) e;
這個查詢將返回以下結(jié)果:
DEPTNO DNAME LOC EMPNO
------ -------------- --------------- ----------
10 HR New York 1
10 HR New York 2
10 HR New York 3
20 IT San Francisco 4
20 IT San Francisco 5
20 IT San Francisco 6
30 Finance Los Angeles 7
30 Finance Los Angeles 8
30 Finance Los Angeles 9
在這個例子中,我們首先創(chuàng)建了一個名為emp_list的嵌套表類型,然后創(chuàng)建了一個包含該類型的表dept。接著,我們向dept表中插入了一些數(shù)據(jù)。最后,我們使用table()函數(shù)將嵌套表emps轉(zhuǎn)換為一個虛擬表,并在查詢中使用它。這樣,我們就可以像查詢普通表一樣查詢嵌套表中的數(shù)據(jù)。