Trong Oracle, một bảng lồng nhau có thể được lưu trữ dưới dạng một cột cơ sở dữ liệu. Điều này có nghĩa là toàn bộ bảng lồng nhau được chứa trong một hàng của bảng cơ sở dữ liệu và mỗi hàng của cơ sở dữ liệu có thể chứa một bảng lồng nhau khác nhau. Để lưu một bảng lồng nhau trong cơ sở dữ liệu, bạn phải sử dụng CREATE TYPE
câu lệnh để tạo kiểu bảng lồng nhau, thay vì một câu lệnh kiểu trong khối PL / SQL.
Bằng cách sử dụng CREATE TYPE
, kiểu được lưu trữ trong từ điển dữ liệu và do đó có sẵn để sử dụng làm kiểu cột. Ví dụ sau minh họa cách tạo bảng lồng nhau dưới dạng cột cơ sở dữ liệu.
Oracle PL / SQL - Tạo Bảng lồng nhau trong Cơ sở dữ liệu
CREATE TYPE BookObj AS OBJECT ( title VARCHAR2(40), author VARCHAR2(40), catalog_number NUMBER(4) ); CREATE TYPE BookList AS TABLE OF BookObj; CREATE TABLE course_material ( department CHAR(3), course NUMBER(3), required_reading BookList ) NESTED TABLE required_reading STORE AS required_tab;
Có một số điều cần lưu ý về danh sách trên và tạo các bảng lồng nhau trong cơ sở dữ liệu:
- Loại bảng được thiết kế với
CREATE TYPE
để nó có thể được lưu trữ trong từ điển dữ liệu. - Loại bảng được sử dụng trong định nghĩa bảng, giống như một đối tượng cột.
- Đối với mỗi bảng lồng nhau trong một bảng cơ sở dữ liệu nhất định,
NESTED TABLE
mệnh đề là bắt buộc. Mệnh đề này cho biết tên của bảng cửa hàng.
Bảng lưu trữ là một bảng do hệ thống tạo được sử dụng để lưu trữ dữ liệu thực tế trong bảng lồng nhau. Dữ liệu này không được lưu trữ nội tuyến với phần còn lại của các cột trong bảng; nó được lưu trữ riêng.
required_reading
cột sẽ lưu trữ một REF
vào required_tab
bảng, nơi danh sách sách sẽ được lưu trữ. Đối với mỗi hàng của course_material
, Requi_reading chứa REF cho các hàng tương ứng trong Requi_tab.
LƯU Ý
Bảng cửa hàng (
required_tab
trong ví dụ trên) có thể tồn tại trong một lược đồ khác và có thể có các tham số lưu trữ khác với bảng chính. Bảng cửa hàng có thể được mô tả và tồn tại tronguser_tables
, nhưng không thể truy cập trực tiếp.
Nếu bạn cố gắng truy vấn hoặc sửa đổi trực tiếp bảng lưu trữ, bạn sẽ gặp lỗi Oracle "ORA-22812:không thể tham chiếu bảng lưu trữ của cột bảng lồng nhau". Nội dung của bảng lưu trữ được thao tác thông qua SQL trên bảng chính.
Xem thêm:
- Oracle PL / SQL - Bộ sưu tập (Bảng lồng nhau)